home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 5
/
Aminet 5 - March 1995.iso
/
Aminet
/
misc
/
amag
/
AM9402_1.lha
/
rsys
/
rsysdoc.lha
/
RSys13.doc
< prev
next >
Wrap
Text File
|
1993-09-25
|
174KB
|
3,972 lines
____________________________________________________________________
____________________________________________________________________
######### ######### #### #######
## ## ## ## ## ## ## ##
## ## ## ## ## ##
## ## ## ## ## ##
######### ######## ## ## ####### ## ####
## ## ## ## ## ## ## ##
## ## ## ## ## ###### ## ##
## ## ## ## #### ## ## ## ## ##
## ### ######## ## ####### ## ## #######
___________________________ ## _____________________________________
_________________________ ### ______________________________________
Was ist RSys?
*************
`RSYS' ist von allem ein bißchen `:-)'
Die Hauptanregung zu `RSYS' bekam ich durch die verschiedenen
Systemutilities, wie `Xoper', `ARTM', `TaskX' und andere. Die einen erlaubten
einen tiefgreifenden Einblick in das Betriebssystem (`Xoper'), waren aber etwas
unkomfortabel in der Bedienung, andere wiederum boten zwar viel Information
(`ARTM'), waren dann aber nicht ganz absturzsicher und boten einfach zuviel,
worunter die Übersicht litt. Wieder andere boten noch andere Features, wie
WorkBench-Unterstützung und Application Icons (AppIcons), bzw. -Windows
(Toolmanager), aber keine Systeminformationen. Bei fast allen Programmen aber
war kein Quellcode dabei, weswegen wirklich gute Programmierlösungen nur den
Programmierern vorbehalten war.
Aus diesen Überlegungen heraus entstand `RSYS'. `RSYS' hat etwas von
`ARTM' und `Xoper', aber auch ein wenig vom `Toolmanager' und von `Icon'.
Eines hat aber `RSYS' den anderen Programmen voraus: der Sourcecode ist
dokumentiert und im Lieferumfang dabei.
Bei der Source legte ich Wert auf eine gute Dokumentation und die Lesbarkeit
der Programmteile. Allerdings war ich auch etwas faul, was eine ausführliche
Dokumentation angeht. Das Programm habe ich völlig in Public Domain gestellt,
bitte aber dennoch (natürlich :-) um konstruktive Kritik. Sie soll dazu
beitragen, Verbesserungen einzubauen und Fehler auszumerzen.
Ziemlich am Ende dieser Dokumentation habe ich auch einige Hintergrundinfos
zu den einzelnen Systemlisten und -objekten geschrieben. Außerdem ist in den
Quelltexten einiges an Informationen zu den einzelnen Programmpunkten
ausgeführt, so daß sich ein Blick in das Programm immer lohnt.
`RSYS' wurde unter Berücksichtigung aller mir bekannten Richtlinien der
Programmierung unter AmigaDOS 2.0 geschrieben. Alle kritischen Routinen wurden
bis zu dreimal abgesichert. Das bläht zwar etwas den Code, gewährleistet
aber die Lauffähigkeit auch unter Betriebssystemen >= 2.04.
Besonderer Wert wurde auf die Vermeidung von Speicherfehlern und
Enforcer-Hits gelegt. Bei einem auftretenden Speicherfehler wird in den
meisten Fällen das Programm unter Angabe von Quelldatei- und Funktionsname,
sowie der Zeilennummer im Quelltext abgebrochen und beendet.
`RSYS' verfügt über einen eigenen Trap-Handler. Damit kann evtl. vor
einem Absturz das Programm noch korrekt beendet werden. Da dann alle Resourcen
von `RSYS' freigegeben werden, ist auch der Grund des Absturzes (falls er von
dem Programm selbst erzeugt wurde ;) beseitigt, und es kann weitergearbeitet
werden, ohne den Rechner zurückzusetzen.
`RSYS' bietet die meisten Systemlisten an, im Vergleich zu allen anderen
"System-Monitoren". Manche dieser Listen und der Listenelemente sind unter
Berücksichtigung o.g.~Richtlinien modifizierbar.
Die Dokumentation wurde mit `TeXInfo' bearbeitet und ist im Quelltext im
Lieferumfang dabei. Mit `MakeInfo' können daraus die `AmigaGuide-' und
`Doc'-Files erzeugt werden. Der Ausdruck der Dokumentation umfaßt z.Zt.
S{No Value For "EITEN"} Seiten, inklusive einiger Hintergrundinformationen zur
Systemprogrammierung.
Die Installation des Paketes (oder Teile des Paketes) werden vollständig
über ein Installer-Script vorgenommen. Beim Installationsskript wurde Wert auf
Komfortabilität und Lesbarkeit gelegt. Es ist auch möglich, eine
Nachinstallation vorzunehmen, beispielsweise, wenn man die Dokumentation neu
installieren möchte.
Copyrights und Verwendung
*************************
Es wird keine Garantie gegeben, daß das Programm 100%ig zuverlässig
ist. Ihr benutzt dieses Programm auf eigene Gefahr. Der Autor kann auf
keinen Fall für irgendwelche Schäden verantwortlich gemacht werden, die
durch die Anwendung dieses Programmes entstehen.
Weiterhin darf das Programm und der Quelltext zu `RSYS' 1.3 nicht zu
kommerziellen Zwecken jeder Art verwendet werden. Desweiteren dürfen das
Programm und der Quelltext nicht direkt und nicht indirekt zu militärischen
Zwecken jeder Art verwendet werden! Jede Veröffentlichung in Diskmagazinen
und Zeitschriften *muß* mit der Zustimmung des Autors stattfinden. Das
Programmpaket und die Dokumentation sollten ohne Veränderung weitergegeben
werden. Ferner sollten *KEINE* Dateien hinzugenommen werden oder selbige
verändert werden!
Der Quelltext ist völlig Public Domain und Giftware, aber es wäre nett,
wenn mich der jeweilige Programmierer in einer kleinen Danksagung erwähnen
würde. Auch wenn andere dieses Programm als Grundlage nehmen, um ein neues
`RSYS' zu programmieren, sollten diese sich mit mir in Verbindung setzen, damit
wir unsere Aktivitäten koordinieren können.
Der Autor ist weiterhin sehr empfänglich für kleine Geschenke, also Geld
:-), Gummibärchen, Briefe, Postkarten, Disketten, Musikkassetten u.v.a.m.
Auch Geldspenden, Schecks oder Überweisungen werden nicht abgelehnt :-))
Hier meine Adresse:
Rolf Böhme
Stammestr. 48
30459 Hannover
Germany
EMAIL: R.BOEHME@COPS.ZER
FIDO: 2:245/44.2 (Rolf Boehme)
Ich behalte mir weiterhin vor, den Typ des Programmes (PD, Freeware,
Shareware, Payware) zu ändern. Daher gelten diese Festlegungen nur für
`RSYS' 1.3. Alle weiteren oder vorhergehenden Releases oder Versionen
unterliegen dann anderen Bestimmungen.
Installation von RSys
*********************
Die Installation von `RSYS' gestaltet sich recht einfach. Zum einen ist
`RSYS' ein CLI-Programm, d.h. es kann vom CLI wie ein AmigaDOS-Befehl
aufgerufen und gleich wieder verlassen werden.
Zum anderen ist es ein Befehl für das `wbstartup'-Verzeichnis der
Bootpartition. Wird das Icon und das Programm in dieses Verzeichnis gelegt, so
erscheint ein neues Icon auf der WorkBench, das wie eine verkleinerte Form des
Hauptfensters von `RSYS' aussieht. Durch einen Doppelklick auf das Icon oder
einen CLI-Aufruf verschwindet das Icon und das Hauptfenster erscheint. Wenn
`RSYS' schon im Hintergrund läuft, d.h. vom `wbstartup'-Verzeichnis aus
geladen wurde, wird das Programm nach einem weiteren Aufruf aus dem CLI
natürlich viel schneller erscheinen.
Ab Version 1.2 kann die Installation vollständig mit dem `Installer'
vorgenommen werden. Mit ihm könnt Ihr nicht nur alle Programmteile und
Dateien installieren, sondern auch einzelne Teile des Programmpaketes
nachinstallieren. Der `Installer' ist seid kurzem frei verfügbar, liegt aber
`RSYS' nicht bei. Er sollte in jeder guten Mailbox oder bei einem PD-Händler
erhältlich sein.
Entsprechend der verschiedenen Verwendungsmöglichkeiten gestaltet sich auch
die Installation von `RSYS' (falls sie von Hand vorgenommen werden soll), die
jetzt im Einzelnen besprochen wird.
Installation von der WorkBench
==============================
Dazu wird `RSYS' und die mitgelieferte Info-Datei `RSys.info' in das
`wbstartup'-Verzeichnis der Bootpartition oder -diskette kopiert. Wird die
Default-Einstellung gewählt, sollten sich die externen Dateien in den
Verzeichnissen befinden, die duch die ToolTypes des Programms vorgegeben sind.
Es ist aber möglich, `RSYS' zu starten und diese Dateien per FileRequester
nachträglich zu anzugeben und die Konfiguration im Icon zu speichern.
Der Aufruf von der WorkBench aus über das `wbstartup'-Verzeichnis bietet
ein paar mehr Möglichkeiten. Zunächst aber zu den Parametern vom Icon, den
*ToolTypes*. `RSYS' unterstützt in dieser Version mehrere ToolTypes. Im
folgenden sind sie alle aufgelistet, zunächst die Tastenkombinationen der
verschiedenen Utilities von `RSYS':
- ToolType: CX_HOTKEY (DEFAULT: `lshift rshift y')
Mit dieser Tastenkombination kann `RSYS' aktiviert werden, falls es im
System schon existiert. Es erscheint dann das Hauptfenster von `RSYS'.
- ToolType: CX_CRYPT (DEFAULT: `lshift rshift k')
Es erscheint nach dieser Tastenkombination das `Crypt Files'-Window von
`RSYS', eine der Utilities von `RSYS'.
- ToolType: CX_FINDFILE (DEFAULT: `lshift rshift s')
Diese Tastenkombination startet die Benutzeroberfläche zum Suchen von
Dateien.
- ToolType: CX_FORMAT (DEFAULT: `lshift rshift f')
Es erscheint ein kleines Window, in dem der `Format'-Befehl einfach
konfiguriert und gestartet werden kann.
- ToolType: CX_HUNKLIST (DEFAULT: `lshift rshift h')
Diese Tastenkombination läßt ein Fenster erscheinen, in dem die
Hunkstruktur eines Executables aufgelistet werden kann. Sehr nützlich
für Programmierer.
- ToolType: CX_CRC (DEFAULT: `lshift rshift c')
Nach dieser Tastenkombination erscheint ein kleines Fenster, in dem die
CRC-Checksummen von Dateien berechnet werden können.
- ToolType: CX_SAVEWINDOW (DEFAULT: `lshift rshift w')
Durch diese Tastenkombination erscheint ein Window, in dem Windows, die im
System geöffnet worden sind, als IFF-Dateien abgespeichert werden
können.
- ToolType: CX_FILEREQUEST (DEFAULT: `lshift rshift esc')
Es kommt vor, daß man eine bestimmte Datei sucht, auch weiß, wo sie
liegt, aber partout keine Lust hat, den 45 Zeichen langen Dateinamen
einzugeben. Mit der obigen Tastenkombination erscheint der
`ASL'-Requester des AmigaOS. Damit kann eine Datei ausgewählt werden und
der Name samt vollständiger Pfadbezeichnung ins ClipBoard kopiert werden.
Er steht dann jeder anderen Anwendung zur Verfügung.
Im weiteren folgen die Tooltypes, mit denen die Benutzungseigenschaften von
`RSYS' beeinflußt werden können:
- ToolType: NOFASTMODE (DEFAULT: `OFF')
Das Haupt-Listview von `RSYS' wird normalerweise erst dann aktualisiert,
wenn alle Einträge erzeugt worden sind. Wird dieses Tooltype gesetzt,
wird die Anzeige während der Erzeugung der Listeneinträge
aktualisiert. Bei größeren Listen kann es dann etwas länger
dauern, bis die Anzeige fertig ist (deshalb *NO*FASTMODE).
- ToolType: NOSORT (DEFAULT: `OFF')
Alle Listen, bis auf die, die in der Liste selber noch Unterpunkte oder
Überschriften haben, werden alphabetisch sortiert angezeigt. Mit diesem
Flag kann die Sortierung der Listeneinträge abgeschaltet werden.
- ToolType: WORKINGBAR (DEFAULT: `OFF')
Mit diesem Flag wird die Anzeige eines Statusbalkens eingeschaltet.
Während eine Liste im ListView aktualisiert wird, läuft ein Statusbalken
mit. Für den Balken wird der Bereich des `Informationen /
Messages'-Gadgets verwendet.
- ToolType: AUTOFRONT (DEFAULT: `ON')
Ist dieser Schalter gesetzt, erscheint jedes `RSYS'-Fenster vor allen
anderen auf dem vordersten Screen.
- ToolType: MOUSEWINDOW (DEFAULT: `ON')
Ist dieses Flag gesetzt, werden alle Fenster von `RSYS' relativ zur
Mausposition geöffnet.
- ToolType: TOPAZFONT (DEFAULT: `OFF')
`RSYS' ist so programmiert, daß es theoretisch mit *jedem* Font verwendet
werden kann. Ist der Font zu groß, wird automatisch der Systemfont
`Topaz 8' verwendet. Ist dieses Tooltype aktiv, wird sofort `Topaz 8'
verwendet. Das ist dann nützlich, wenn als Bildschirmzeichensatz
entweder ein zu großer Font, oder aber ein proportionaler Font gewählt
wurde. Die ListView-Einträge werden mit Leerzeichen formatiert, da
Tabulatoren in fast jedem Font als kleine Rechtecke gezeichnet werden.
Infolgedessen sieht die Formatierung unter einem proportionalen Font etwas
zerrissen aus.
- ToolType: NOSAVEASKING (DEFAULT: `OFF')
Manchmal hemmen die vielen Sicherheitsabfragen von `RSYS' den normalen
Arbeitsfluß. Aus diesem Grund habe ich das Tooltype `NOSAVEASKING'
implementiert. Ist dieser Schalter gesetzt, werden alle Ja-Nein-Requester
unterdrückt und interne Vorgaben verwendet.
- ToolType: NOAPPICON (DEFAULT: `OFF')
Damit wird verhindert, daß ein AppIcon auf der WorkBench erscheint.
Natürlich ist damit auch das Actioning nicht mehr möglich.
Für das Aussehen des `RSYS'-Hauptfensters sind die nächsten sechs
ToolTypes zuständig. Hiermit werden die Farbeinstellungen der `RSYS'-Fenster
vorgenommen.
- ToolType: BACKPATTERNCOL (DEFAULT: `2')
Das Hauptfenster kann ähnlich wie bei den Systemrequestern, mit einem
Hintergrundmuster versehen werden. Die Farbe kann mit diesem Tooltype
festgelegt werden.
- ToolType: BACKGROUNDCOL (DEFAULT: `0')
Die Hintergrundfarbe des Pattern-Musters kann hier gesetzt werden.
Abhängig von der Auflösung des Bildschirms kann beispielsweise ein leicht
gelbliches Muster erzeugt werden, wenn BACKPATTERNCOL auf Schwarz und
BACKGROUNDCOL auf Weiß gesetzt wird.
- ToolType: BACKPATTERN (DEFAULT: `5555AAAA')
Hiermit wird das Hintergrundmuster selbst festgelegt. Die anzugebende
long-Hexzahl legt die "erste" und "zweite Reihe" des Musters fest, das
dann für das Füllen des Fensters verwendet wird. Welches Muster dabei
heraus kommt, kann man sich auf folgende Weise einfach vorstellen. Die
Hexzahl schreibt man sich in der binären Darstellung mit 32 Stellen hin.
Für den Default-Wert sieht die Darstellung so aus:
5555AAAA = 01010101010101011010101010101010
Nun teilt man diese long-Zahl in zwei Hälften und schreibt sie
untereinander, also so:
5555AAAA = 0101010101010101
1010101010101010
Die gesetzten Pixel sind die Einsen. Man sieht, daß sich aus diesem Wert
ein `Schachbrett-Muster' ergibt, das auch bei den Systemrequestern
verwendet wird. Mit dem Muster 0000FFFF kann man sich übrigens ein
waagerecht gestreiftes Muster, mit CCCCCCCC ein senkrecht gestreiftes
erzeugen lassen.
- ToolType: DETAILPEN (DEFAULT: `0')
- ToolType: BLOCKPEN (DEFAULT: `1')
- ToolType: MENUPEN (DEFAULT: `2')
Mit diesen ToolTypes kann man die Farben des Hauptwindows und des Menüs
des Hauptwindows festlegen. Eine nette Farbvariation ist 2, 3, 1,
Reihenfolge, wie oben angeführt.
- ToolType: LISTHEIGHT (DEFAULT: `18')
Dieses ToolType gibt die Höhe des ListViews auf dem Hauptfenster in Zeilen
an. Steht hier -1, berechnet `RSYS' automatisch die maximale Höhe des
ListViews, damit das Fenster auf dem aktuellen Screen geöffnet werden
kann. Nach dieser Anzahl wird übrigens die Höhe des Hauptfensters
ausgerichtet. Dies ist eine Neuerung gegenüber Version 1.2, da ab sofort
das Hauptfenster in seiner Höhe variabel ist.
Die nächsten ToolTypes regeln das Zusammenspiel von `RSYS' mit externen
Dateien. Seit der Version 1.3 sind viele externe Dateien, auf die `RSYS'
zugreifen kann, hinzugekommen. Diese müssen in einem ganz bestimmten Format
vorliegen.
- ToolType: HARDWAREDATA (DEFAULT: `RSYS:RSysHardware.dat')
in dieser Datei sind alle mir bekannten Firmennamen, Produktbezeichnungen
und Kennzahlen enthalten. Damit wird es `RSYS' ermöglicht, eine komplette
Produktliste der installierten Hardware eines Rechners zu erstellen. Diese
Liste kann mit einem mitglieferten Programm einfach und intuitiv erweitert
werden, so daß man immer die aktuellsten Daten zur Verfügung hat.
- ToolType: LIBOFFDATA (DEFAULT: `RSYS:RSysLibOff.dat')
Diese Datei enthält die Daten aus den FD-Files der
Commodore-Include-Dateien in einem `RSYS'-Format. Da die Include-Dateien
durch Commodore urheberrechtlich geschützt sind, habe ich eine
`AREXX'-Datei beigelegt, die die notwendigen Daten aus den FD-Files in dem
logischen Verzeichnis `FD:' extrahiert.
- ToolType: AGUIDEDOC (DEFAULT: `RSYS:doc/RSys13.guide')
Für die `AmigaGuide'-Unterstützung im `Help'-Modus wird die originale
Dokumentation von `RSYS' 1.3 verwendet. Mit diesem ToolType wird der
vollständige Pfad angegeben, in dem sich diese Datei befindet.
- ToolType: AGUIDECONTEXT (DEFAULT: `RSYS:doc/RSys13.guide.context')
Zu jedem Objekt auf einem `RSYS'-Fenster gehört ein ein entsprechender
Node-Eintrag in der `AmigaGuide'-Dokumentation. In der Datei, die diesem
ToolType folgt, befinden sich alle Node-Kennungen, auf die `RSYS' im
`Help'-Modus zugreift. Die Anzahl der Nodes und die Anordnung in dieser
Datei dürfen *NICHT* verändert werden!
- ToolType: ACTIONFILE (DEFAULT: `RSYS:RSys.act')
In dieser Datei werden die Aktionen festgelegt, die nach einem Verschieben
eines Icons auf das AppIcon ausgeführt werden sollen.
- ToolType: OUTWINDOW (DEFAULT: `CON:/10//150/Sys Window/AUTO/CLOSE')
Über das AppIcon von `RSYS' können Aktionen gestartet werden,
insbesondere durch den Aufruf von externen Programmen. Dieser Tooltype
legt das Ein- und Ausgabefenster von `RSYS' fest.
Wurde `RSYS' von der WorkBench aus gestartet, erscheint ein neues Icon.
Wird es doppelgeklickt, erscheint das Hauptfenster von `RSYS'. Den gleichen
Effekt hat ein erneuter Aufruf vom CLI. Danach wird jedoch das CLI wieder
freigegeben, da `RSYS' bereits gestartet wurde.
Aufruf von RSys
===============
Möchtet Ihr `RSYS' als reinen CLI-Befehl installieren, so kopiert einfach
das Programm `RSYS' in das `C:'-Verzeichnis Eures Bootdevices, also i.a. in
`SYS:C'. `RSYS' kann dann wie ein normaler CLI-Befehl verwendet werden.
Mit dem Aufruf
`RSYS' ?
bekommt ihr gemäß den AmigaDOS-Konventionen eine Kommandoschablone
(Template) angezeigt. Dieses hat folgendes Format:
`RSYS' 1.0 (07-Aug-92) [11:47] (c) by Rolf Boehme
T=TASKS/S,L=LIBRARIES/S,M=MEMORY/S,P=PORTS/S,V=VOLUMES/S,A=ASSIGNS/S,
F=FONTS/S,R=RESOURCES/S,I=INTERRUPTS/S,W=WINDOWS/S,S=SCREENS/S,
H=INPUTHDL/S
Ihr könnt beim Aufruf entweder die Kurzform angeben, oder die
vollständige Form, z.B.
`RSYS' T oder `RSYS' TASKS
Beide Aufrufe haben den gleichen Effekt. Der Typ `/S' sagt, daß es sich
um Schalter handelt, d.h. jeder Parameter veranlaßt `RSYS' zu einer
entsprechenden Ausgabe im ListView des Hauptfensters.
Es können mehrere Schalter angegeben werden, ist aber ziemlich
zwecklos, da nur der erste Parameter gilt und "behandelt" wird. Die
Aufrufe
`RSYS' T L P R A und `RSYS' T
haben also den gleichen Effekt.
Das Programm könnt Ihr dann mit einem Druck auf die ESC-Taste sofort
verlassen. Falls Ihr `RSYS' einfach mal kleiner machen wollt, könnt ihr das
Zoomgadget rechts oben verwenden. Allerdings bleibt das Start-CLI bis zur
Beendigung des Programms immer noch gesperrt.
Ab `RSYS' 1.2 kann man das Programm nicht mehr in den Iconify-Zustand
bringen, wenn es von einem CLI aus aufgerufen wurde. Iconify ist jetzt nur
möglich, wenn `RSYS' vom `wbstartup'-Verzeichnis oder über die WorkBench
aufgerufen wurde.
Externe Dateien und Formate
***************************
Viele Daten, die in früheren Version von `RSYS' noch im Programm eingebaut
waren, wurden in externe Dateien verlagert. Dabei wurde zum Einlesen dieser
Daten ein einheitliches Format verwendet, das im folgenden beschrieben wird.
Jedes Datum in diesen Dateien hat den folgenden Aufbau
[keyword] = [keyvalue] oder
[keyword] oder
[keyvalue]
^
|
Spalte 1
Das Schlüsselword `END' legt das Ende einer Datengruppe fest. Die Zeichen #
und ; leiten Kommentare ein, wenn sie als erstes Zeichen in einer Zeile
auftreten. Alle dem Kommentarzeichen nachfolgenden Zeichen werden ignoriert.
Die `keywords' müssen in der ersten Spalte einer Datei erscheinen. Leerzeilen
werden, wie Kommentare überlesen.
Im folgenden werden alle externen Dateien mit ihrem Aufbau besprochen.
Die Hardware-Daten
==================
Die Datei mit den Produktdaten hat generell folgenden Aufbau:
<Anzahl n der Firmennamen>
<Firmenname 1>
<Firmenname 2>
[...]
<Firmenname n-1>
<unknown>
<Anzahl m der Hardware-Daten>
NAME = <Name des 1. Eintrags>
MANUFACTURER = <Manufacturer-Nummer des 1. Eintrags>
PRODUCT = <Product-Nummer des 1. Eintrags (-1, wenn unbekannt)>
TYPE = <Typnummer des 1. Eintrags>
COMPANY = <Nummer des Firmennamens (s.o.)>
END
NAME = <Name des 2. Eintrags>
MANUFACTURER = <Manufacturer-Nummer des 2. Eintrags>
PRODUCT = <Product-Nummer des 2. Eintrags (-1, wenn unbekannt)>
TYPE = <Typnummer des 2. Eintrags>
COMPANY = <Nummer des Firmennamens (s.o.)>
END
[...]
NAME = <Name des m-1. Eintrags>
MANUFACTURER = <Manufacturer-Nummer des m-1. Eintrags>
PRODUCT = <Product-Nummer des m-1. Eintrags (-1, wenn unbekannt)>
TYPE = <Typnummer des m-1. Eintrags>
COMPANY = <Nummer des Firmennamens (s.o.)>
END
NAME = <unknown>
MANUFACTURER = -1
PRODUCT = -1
TYPE = -1
COMPANY = n
END
^
|
Spalte 1
Hierbei ist zu beachten, daß der `NAME'-Eintrag einen Gruppenanfang bildet
und die Kennung `END' die Gruppe beendet. Die Reihenfolge der Schlüsselwörter
`MANUFACTURER', `PRODUCT', `TYPE' und `COMPANY' ist innerhalb der Gruppe
beliebig. Weiterhin müssen mindestens soviele Einträge vorhaneden sein, wie
die jeweiligen Anzahlen zu Beginn angeben. Werden zuviele oder zuwenig
Gruppeneinträge angegeben, kann keine korrekte Zuordnung von `RSYS' erfolgen.
Hinter dem Schlüsselwort `COMPANY' kommt die Nummer der entsprechenden Firma,
die am Anfang der Datei gelesen wird.
Der letzte Eintrag `<unknown>' ist zwingend, ebenso wie mindestens ein
Hardware-Datensatz vorhanden sein muß! Eine minimale Datei hat also folgenden
Aufbau:
1
<unknown>
1
NAME = <unknown>
MANUFACTURER = -1
PRODUCT = -1
TYPE = -1
COMPANY = 1
END
Die Library-Offsets
===================
Die Datei mit den Library-Offsets hat generell folgenden Aufbau:
LIBNAME = <Name der Library>
TYP = <L oder D für Library oder Device>
BASE = <Name der Library-Struktur>
FUNCTION = <Name der Funktion>,<Offset der Funktion>,<1: public, 0:private>
[...]
END
^
|
Spalte 1
Eine Datengruppe wird mit `LIBNAME' eingeleitet, hinter welcher der Name der
aufgeführten Library folgt, und mit `END' beendet. Dazischen können in
beliebiger Reihenfolge die Kennungen `TYP', `BASE' und `FUNCTION' (dieser Typ
beliebig oft) kommen.
Der Typ `L' oder `D' hinter dem Schlüsselwort `TYPE' gibt an, ob es sich
bei der Library um ein Device handelt. Bekanntlich sind Device und Library
strukturell fast identisch.
Die Kennung `FUNCTION' beschreibt eine Library-Funktion mit dem Namen, ihrem
Offset und einer Zahl, die die Zugänglichkeit der Funktion charakterisiert.
Steht hier eine `0', ist diese Funktion privat und sollte von Programmierern
nicht benutzt werden. Eine `1' markiert diese Funktion als `public', also als
öffentlich nutzbar.
Auch diese Datei sollte nicht leer sein. Eine Beispieldatei für das
`console.device' sieht z.B.~so aus:
LIBNAME = console.device
TYP = D
BASE = _ConsoleDevice
FUNCTION = CDInputHandler,42,1
FUNCTION = RawKeyConvert,48,1
##--- functions in V36 or higher (distributed as Release 2.0) ---
FUNCTION = consolePrivate1,54,0
FUNCTION = consolePrivate2,60,0
FUNCTION = consolePrivate3,66,0
FUNCTION = consolePrivate4,72,0
END
Der Kommentar mit `##' ist in den FD-Files enthalten und wird automatisch
als Kommentar in die `RSYS'-Datei übernommen.
Die FD-Files, aus denen diese Datei erzeugt wird, sind von Commodore
geschützt. Aus diesem Grunde habe ich ein kleines `AREXX'-Programm geschrieben
(`fd2rsys.rexx'), das diese Datei aus den Dateien im logischen Verzeichnis
`FD:' generiert. So kann `RSYS' auch an neuere Betriebssystemversionen einfach
angepaßt werden.
Die AmigaGuide-Context-Nodes
============================
`RSYS' besitzt einen `Help'-Modus, der auf dem HyperText-System `AmigaGuide'
basiert. Damit die Hilfe den richtigen Menüpunkt in der Dokumentdatei bei
entsprechender Aktion anspringen kann, müssen diese `Nodes' vorher bekannt
sein. Der Aufbau einer Context-Datei sieht wie folgt aus:
"<Node 1>"
"<Node 2>"
[...]
"<Node 127>"
Hierbei ist anzumerken, daß die Anführungsstriche sinnvollerweise mit
angegeben werden sollten, da die Referenzen auch Leerzeichen enthalten können.
Durch diese Leerzeichen erkennt das `AmigaGuide'-System einen Laufzeitfehler,
da vermeintlich zwei Paramter übergeben wurden.
Die Anzahl 127 ist von `RSYS' vorgegeben, womit der Aufbau der Datei also
auch weitestgehend festgelegt ist. Damit die Hilfe korrekt referenziert werden
kann, ist es von größter Wichtigkeit, daß die Anzahl der Daten und die
Reihenfolge in der externen Datei erhalten bleibt!
Natürlich können Kommentare eingefügt werden, da sie von `RSYS'
überlesen werden. Damit die Daten zügig eingelesen werden können, sollten die
Kommentare jedoch sparsam verwendet werden.
Die Action-Anweisungen
======================
Das Format einer `Action'-Anweisung sieht wie folgt aus:
<Filetyp-Nummer>#<Filetyp-Beschreibung>#<Aktionsname>#<Befehl>#<W oder C>#
Die `<Filetyp-Nummer>' ist vorgeschrieben, ebenso wie die
`<Filetyp-Beschreibung>'. Der `<Aktionsname>', der `<Befehl>' und die Kennung
`<W>' oder `<C>' ist frei wählbar. Steht als `<Aktionsname>' die Zeichenkette
`NO ACTION', so wird keine Aktion ausgelöst, wenn der entsprechende Eintrag
angeklickt wurde. Der `<Befehl>' sollte ein gültiger CLI-Befehl sein. Wird
hinten die Kennung `W' angegeben, bleibt das ListView-Fenster offen und weitere
Aktionen können gestartet werden. Wird die Kennung `C' für `Continue'
angegeben, wird nur eine Aktion ausgeführt und das Aktionsfenster schließt
sich nach dieser Aktion. Hierzu ein Beispiel: Für LHA-Archive existieren
folgende Einträge:
39#LHArc archive#Archiv listen#OwnC:LZ l #W#
39#LHArc archive#Archiv testen#OwnC:LZ t #W#
In der Titelzeile erscheint der Eintrag `LHArc archive' und in dem ListView
die Einträge `Archiv listen' und `Archiv testen'. Wird der Eintrag `Archiv
listen' angeklickt, wird der Befehl `OwnC:LZ l <objektname>' ausgeführt.
Das Hauptfenster
****************
Nach einem Aufruf vom CLI oder einem Doppelklick auf das AppIcon
erscheint das Hauptfenster von `RSYS'. Es ist grob in fünf Bereiche
unterteilt:
+---------------------------------------------------------------+
| Menübereich |
+---------------------------------------------------------------+
+----------------------------------+
| Tabellenkopf/Titelzeile |
+----------------------------------+
| |
| |
| Anzeigebereich/LV |
| |
| |
+----------------------------------+
| Informationen/Messages |
+----------------------------------+
| |
| Gadgetbereich |
| |
+----------------------------------+
Der Bereich `Tabellenkopf / Titelzeile' enthält entsprechend die Spalten-
bezeichnung der ListView-Einträge im Anzeigebereich. Im `Gadget'- und
`Menü'-Bereich können die gewünschten Listen angewählt werden. Allgemeine
Informationen erscheinen einzeilig in dem Bereich `Informationen / Messages'.
Die einzelnen Bereiche sollen nun genauer beschrieben werden.
Die Gadgets
===========
Die einzelnen Gadgets und die damit erzeugten Listen, die dann im
ListView gezeigt werden, nun im Einzelnen.
Task-Liste der ExecBase
-----------------------
- Gadget: Tasks (TASTE: T KOMMANDOPARAMETER: T)
Beispielausgabe:
Taskname Typ Pri Stack Stat Cli
---------------------------------------
ConClip Proc Proc 0 4000 Wait 2
^ ^ ^ ^ ^ ^
| | | | | +- CLI-Nummer, falls es sich
| | | | | um einen Prozeß handelt
| | | | +- Status des Prozesses/Tasks (P/T)
| | | | Inv : Invalid. P/T ist "kaputt"
| | | | Add : P/T wird gerade erzeugt
| | | | Run : P/T wird gerade abgearbeitet,
| | | | in jedem Falle der aktive
| | | | P/T, also `RSYS'!
| | | | Rdy : Prozeß ist fertig zum Start
| | | | Wait: P/T wartet auf Event
| | | | Excp: Task hat eine Exception
| | | | ausgelöst
| | | | Rem : Task wird gerade entfernt
| | | +- Stack des P/T
| | +- Priorität des Tasks
| +- Typ des Eintrags
| Proc : Eintrag ist ein Prozeß
| Task : Eintrag ist ein Task
+- Name des P/T
Aktionen: Nach dem Anklicken erscheint ein Systemrequester mit vielen
Daten zu dem geklickten Eintrag und sieben Gadgets.
* `Continue':
Es wird zum Hauptfenster zurückgekehrt.
* `^C, ^D, ^E, ^F':
Die entsprechenden `Break-Signale' werden an den P/T gesendet.
* `Taskpri':
Über ein erscheinendes Window kann die Priorität des P/T verändert
werden. Das Close- und Cancelgadget beenden die Eingabe ohne die
Priorität zu ändern; `Ok' übernimmt die neue Priorität und
setzt den P/T entsprechend. Im Stringgadget kann die Eingabe direkt
geschehen.
* `Kill task!:'
Zunächst werden an den P/T alle möglichen Signale (also `^C' bis
`^F') gesendet. Falls der P/T immer noch existiert, wird
nach einer Sicherheitsabfrage der Task per "RemTask()" entfernt.
Danach werden alle gefunden Objekte, die mit dem Task in Verbindung
stehen (Screens, Windows, Ports), aus dem System entfernt.
Library-Liste der ExecBase
--------------------------
- Gadget: Libraries (TASTE: L, KOMMANDOPARAMETER: L)
Beispielausgabe:
Libraryname Version OpenCnt O
------------------------------------
kd_freq.library 3.13 1 *
^ ^ ^ ^
| | | +- Falls ein * erscheint, ist
| | | die entsprechende Lib offen
| | | und wird von mindestens einem
| | | Programm benutzt
| | +- Anzahl, wie oft die Lib
| | geöffnet wurde. Ist die Anzahl
| | 0, kann die Lib aus dem System
| | entfernt werden
| +- Versions- und Revisionsnummer der
| Library
+- Name der Library
Aktionen: Nach dem Anklicken erscheint ein Systemrequester mit drei
Gadgets:
* `Continue':
Es wird zum Hauptfenster zurückgekehrt.
* `Flush Lib':
Es wird nach einer Sicherheitsabfrage versucht, die Library aus dem
System zu entfernen.
Memory-Liste in der ExecBase
----------------------------
- Gadget: Memory (TASTE: M, KOMMANDOPARAMETER: M)
Beispielausgabe:
Memory address Size Type
---------------------------------------------
Gesamt : 4717504 C: 295944 F: 2042112 <- Gesamtspeicheranzeige
Largest: C: 270288 F: 2014344 <- Größter zhg. Speicher
-------------- Fragmentierung ---------
00200000 4194272 FAST
00212840 8 FAST-CHUNK
^ ^ ^
| | +- Typ des Eintrags
| | FAST : Fast-Memory (gesamt)
| | FAST-CHUNK : Typ des Memoryeintrags
| | CHIP : Chip-Memory (gesamt)
| | CHIP-CHUNK : Typ des Memoryeintrags
| +- Größe des Listeneintrags
+- Adresse des Listeneintrags
Aktionen: Diese Liste zeigt die Fragmentierung des Speichers im einzelnen
an. Jedes einzelne Speicherfragment ist mit seiner Adresse, der Größe
und dem Typ angegeben. AmigaOS verwaltet seinen Speicher in minimal acht
Byte-Blöcken. Die Anzahl der acht Byte-Blöcke ist also ein Maß für die
Fragmentierung des Speichers.
Port-Liste in der ExecBase
--------------------------
- Gadget: Ports (TASTE: P, KOMMANDOPARAMETER: P)
Beispielausgabe:
Portname Signal-Task Pri
---------------------------------------------
AREXX RexxMaster 0
^ ^ ^
| | +- Priorität des Ports
| |
| +- Name des Tasks, der die Signale vom
| Port verarbeitet
+- Name des Ports
Aktionen: Es erscheint ein Systemrequester mit zwei Gadgets:
* `Continue':
Es wird zum Hauptfenster zurückgekehrt.
* `Kill Port':
Nach einer Sicherheitsabfrage wird der Port aus der Systemliste
entfernt.
Volume-Liste der DOSBase
------------------------
- Gadget: Volumes (TASTE: V, KOMMANDOPARAMETER: V)
Beispielausgabe:
Volumename K-Free K-Used %Used F Sta Typ
-----------------------------------------
AmigaDOS: 76 6084 98% * R/O FFS
^ ^ ^ ^ ^ ^ ^
| | | | | | +- Typ des Volumes
| | | | | | FFS : FastFileSystem
| | | | | | DOS : Std. DOS-Filesystem
| | | | | | BAD : Unformatierte Disk,
| | | | | | unlesbar
| | | | | | NDO : Keine DOS-Disk
| | | | | | KIC : Kickstart-Diskette
| | | | | | MSD : MS-DOS-Disk
| | | | | | ??? : Sollte NIE auftreten
| | | | | +- Status des Volumes
| | | | | R/O : Read Only
| | | | | VAL : Volume wird gerade
| | | | | validiert
| | | | | R/W : Read/Write
| | | | | ??? : Sonstiger Status
| | | | +- Falls die Volume mehr als zu
| | | | 90% voll ist, steht da ein `*'
| | | +- Anzahl benutzer KByte der Partition
| | | oder Diskette in Prozent
| | +- Anzahl benutzer KByte der Partition
| | oder Diskette in KBytes
| +- Anzahl der freien Kapazität in KBytes
+- Name des Volumes
Aktionen: Nach dem Anklicken erscheint ein Systemrequester mit zwei
Gadgets.
* `Continue':
Es wird zum Hauptfenster zurückgekehrt.
* `Tree':
Es erscheint ein neues Fenster mit einem ListView und zwei
ausgeschalteten Gadgets. Nach dem Fensteraufbau wird sofort mit dem
Einlesen der Disk-Verzeichnis-Struktur begonnen. Das Einlesen kann
mit einem Anklicken des Closegadgets links oben und der daraufhin
erscheinenden Sicherheitsabfrage abgebrochen werden. Nach dem
Einlesen werden die zwei Gadgets aktiviert.
Das linke Gadget ist ein Cycle-Gadget, mit dem zwischen zwei
Darstellungen der Verzeichnisstruktur gewechselt werden kann.
Voreinstellung ist die `Tree'-Darstellung, also die Anzeige des
Verzeichnisbaumes. Nach dem Anklicken wechselt die Darstellung auf
die Anzeige der vollständigen Pfadnamen. Befindet sich der
Zeichensatz `IBM.font' im `FONTS:'-Verzeichnis, werden die
Graphikzeichen dieses Fonts verwendet, um die Verzeichnisstruktur
darzustellen.
Das Gadget `Save Tree' bietet nach dem Anklicken einen Filerequester
an, mit welchem Ihr die Datei auswählen könnt, in der Ihr die
momentan aktive Darstellung (`Tree' oder `Path') abspeichern könnt.
Das Fenster kann über das Closegadget geschlossen werden.
Assign-Liste der DOSBase
------------------------
- Gadget: Assigns (TASTE: A, KOMMANDOPARAMETER: A)
Beispielausgabe:
Assign Directory
---------------------------------------------
BATCH: AmigaDos:c
^ ^
| +- Zu dem Assign gehörender Datei/Verzeichnisname
+- Name des Assigns
Aktionen: Siehe Volumes-Gadget.
Font-Liste der GfxBase
----------------------
- Gadget: Fonts (TASTE: F, KOMMANDOPARAMETER: F)
Beispielausgabe:
Fontname Typ Y X Low Upp
------------------------------------
topaz.font ROM 8 8 32 255
^ ^ ^ ^ ^ ^
| | | | | +- Höchster ASCII-Wert, für den die
| | | | | Zeichen dieses Fonts definiert
| | | | | worden sind
| | | | +- Niedrigster ASCII-Wert, für den
| | | | die Zeichen in diesem Font definiert
| | | | worden sind
| | | +- Breite eines Zeichens in diesem
| | | Zeichensatz
| | +- Höhe eines Zeichens in diesem
| | Zeichensatz
| +- Art des Zeichensatzes:
| ROM : Der Zeichensatz wurde von einem
| Programm geladen oder ist ein
| Systemfont
| Disk : Der Font wurde noch nicht geladen
| und muß von Diskette oder Festplatte
| geladen werden
+- Name des Fonts
Aktionen: Nach dem Anklicken eines Eintrages im ListView erscheint ein
Requester mit drei Gadgets:
* `Continue':
Es wird zum Hauptfenster zurückgekehrt.
* `Show Font':
Es erscheint ein Fenster mit den vier Gadgets `Normal', `Italic',
`Bold' und `Underl'. Nach dem Anklicken eines dieser Toggle-Gadgets
wird der Beispieltext (im Format `(<fontsize>) <fontname>')
entsprechend normal, kursiv, fett oder unterstrichen dargestellt. Das
Gadget `Normal' inaktiviert alle anderen Gadgets.
* `Remove Font':
Nach einer Sicherheitsabfrage wird der Font aus dem System entfernt.
Resourcen-Liste der ExecBase
----------------------------
- Gadget: Resourcen (TASTE: R, KOMMANDOPARAMETER: R)
Beispielausgabe:
Resourcename Version OpenCnt
-------------------------------------
Snap.resource 32.16 0
^ ^ ^
| | +- Anzahl, wie oft die Resource
| | geöffnet wurde
| +- Versions- und Revisionsnummer der
| Resourcen
+- Name der Resource
Aktionen: Alle im System verfügbaren Resourcen werden angezeigt.
Interrupt-Liste der ExecBase
----------------------------
- Gadget: Interrupts (TASTE: I, KOMMANDOPARAMETER: I)
Beispielausgabe:
Interruptname Pri Data Code
--------------------------------------
disk.resource 0 00203624 00F8F774
^ ^ ^ ^
| | | +- Falls einer der 16 Interrupts
| | | aktiviert wird, wird der Code, dessen
| | | Adresse angezeigt wird, ausgeführt
| | +- Der Zeiger auf den privaten Datenbereich der
| | Interruptroutine
| +- Priorität dieses Interrupts
+- Handler oder Resource, der zu diesem Interrupt gehört
Aktionen: Die sechzehn Interrupts des Amigas werden unter Angabe des
Namens, der Priorität und der Adressen der eventuell vorhandenen
Interrupthandler aufgelistet.
Window-Liste der IntuitionBase
------------------------------
- Gadget: Windows (TASTE: W, KOMMANDOPARAMETER: W)
Beispielausgabe:
Windowtitle H W X Y Screen
-----------------------------------------
AmigaShell 100 640 0 0 Workbench
^ ^ ^ ^ ^ ^
| | | | | +- Name des Screens, zu dem
| | | | | dieses Window gehört
| | | | +- Y-Koordinate der Position des Windows
| | | +- X-Koordinate der Position des Windows
| | +- Breite des Windows
| +- Höhe des Windows
+- Titel des Windows. Steht hier ein `<no title>', so hat das Window
keine Titelzeile
Aktionen: Nach dem Anklicken eines Eintrages im ListView erscheint ein
Requester mit zwei Gadgets:
* `Continue':
Es wird zum Hauptfenster zurückgekehrt.
* `Close Window':
Nach einer Sicherheitsabfrage wird versucht, das Window zu schließen.
Screen-Liste der IntuitionBase
------------------------------
- Gadget: Screens (TASTE: S, KOMMANDOPARAMETER: S)
Beispielausgabe:
Screentitle H W X Y Typ
---------------------------------------
Workbench Screen 272 684 0 0 W C
^ ^ ^ ^ ^ ^
| | | | | +- Typ des angeklickten Screens.
| | | | | Mögliche Anzeigen:
| | | | | W : Workbench-Screen
| | | | | P : Public Screen
| | | | | C : Custom-Screen
| | | | +- Y-Koordinate der Position des
| | | | Screens
| | | +- X-Koordinate der Position des Screens
| | +- Breite des Screens
| +- Höhe des Screens
+- Titelzeile des Screens
Aktionen: Nach dem Anklicken eines Eintrages im ListView erscheint ein
Requester mit zwei Gadgets:
* `Continue':
Es wird zum Hauptfenster zurückgekehrt.
* `Close Screen':
Nach einer Sicherheitsabfrage wird versucht, den Screen mit
allen assoziierten Windows zu schließen.
Inputhandler-Liste
------------------
- Gadget: HandlerInp (TASTE: H, KOMMANDOPARAMETER: H)
Beispielausgabe:
Inputhandler name Pri Data Code
------------------------------------------
Snap Input Handler 52 534E4150 003A46DE
^ ^ ^ ^
| | | +- Adresse des Codes, der bei der
| | | Aktivierung dieses Inputhandlers
| | | ausgeführt wird
| | +- Zeiger auf den privaten Datenbereich des
| | Inputhandlers
| +- Priorität des Inputhandlers
+- Name des Inputhandlers
Aktionen: Alle über das `input.device' direkt angemeldeten Input Handler
werden angezeigt. Unter AmigaOS 2.0 übernimmt die `commodities.library'
einen Großteil der Handler.
Allgemeine Systeminfo
---------------------
- Gadget: Systeminfo (TASTE: Y, KOMMANDOPARAMETER: -)
Beispielausgabe:
Systeminfo
----------------------------------------------
14.07.1993, 195. day, 28. week <- Datum, Tag und Woche
Tasks : 30 <- Anzahl der entsprechenden
Libraries : 24 Systemobjekte
Ports : 9
Volumes : 11
Assigns : 36
Fonts : 5
Resources : 9
Windows : 4
Screens : 2
Aktionen: Anzeige aller Systemobjekte (Tasks, Libraries, etc.) sowie
Datum, Woche.
Hardware-Liste der ExpansionBase
--------------------------------
- Gadget: Hardware (TASTE: D, KOMMANDOPARAMETER: -)
Beispielausgabe:
Hardware/Expansion
----------------------------------------------
----- Hardware
Processor : CPU 68030 <- Prozessortyp
Coprocessor : FPU 68882 <- FPU-Typ
Memory Unit : MMU 68030 <- MMU-Typ
Denise : Normal Denise (8362) <- Custom Chips
Agnus : Normal Agnus
Chipset : No AA-Chipset <- Falls hier das AA-Chipset
erkannt wurde, srehen hier
----- Expansion noch mehr Infos
Type : RAM Expansion <- Beschreibung der
Company : C= West Chester Hardware-Erweiterung
Name : A2630 MC68030 (2MB Stand.)
Init Action : Need Driver
> : Private processed
Diagnosis : No action attached
Manuf.nr. : 514 <- Hardware-Kennummern
Prod.nr. : 81
Serial : 0x00000000
Boardaddr. : 0x00200000
Boardsize : 2.097.152 <- Hier steht die evtl.
Slotaddr. : 0x00000020 vorhandene Speichergröße
Slotsize : 32 der Erweiterung
Summary : 1 expansions found
Aktionen: Anzeige des Prozessor- und Co-Prozessortyps, wie er in der
ExecBase verzeichnet ist, und aller internen Erweiterungen, dessen
Einträge aus der ExpansionBase-Struktur entnommen wurden.
Abspeichern einer Liste
-----------------------
- Gadget: Save List (TASTE: -, KOMMANDOPARAMETER: -)
Aktionen: Die aktuelle angezeigt Liste im ListView wird nach einer
Abfrage mit einem Filerequester in die gewünschte Datei abgespeichert.
Springen zwischen Public Screens
--------------------------------
- Gadget: Jump (TASTE: J, KOMMANDOPARAMETER: -)
Aktionen: `RSYS' schließt das Hauptfenster, sucht in der Liste der
Public Screens nach dem nächsten geöffneten Screen, öffnet das
Hauptfenster auf diesem und holt dann den Public Screen nach vorne.
Existiert kein weiterer Public Screen, so erscheint eine
entsprechende Meldung in einem Systemrequester.
Aktualisieren der Liste
-----------------------
- Gadget: New (TASTE: N, KOMMANDOPARAMETER: -)
Aktionen: `RSYS' aktualisiert die aktuelle Liste. Sehr nützlich, wenn
man sich nicht durch die Menüs hangeln möchte, um eine bestimmte Liste
erneut anzeigen zu lassen.
Das Anzeige-ListView
====================
Im ListView werden die angeforderten Systemlisten angezeigt. Die
entsprechenden Einträge im ListView können modifiziert werden, indem der
Eintrag angeklickt wird. Falls eine Veränderung der Einträge erlaubt ist,
erscheint dann ein Systemrequester mit weiteren Informationen, oder im
Bereich `Informationen/Messages' eine Mitteilung, das Veränderungen nicht
möglich sind.
In den folgenden Listen ist eine Modifikation oder Anzeige von weiteren
Eigenschaften der Einträge möglich: Tasks, Libraries, Ports, Volumes,
Assignes, Fonts, Ressources, Windows und Screens.
Die entsprechenden Datenstrukturen werden mit maximaler Sicherheit
modifiziert, d.h., es wird im Zweifelsfalle mehrmals geprüft, ob das
bearbeitete Objekt vor und nach der Modifikation existiert. Da alle
Systemlisten nur *snapshot-artig* ausgelesen und angezeigt werden können, ist
in bestimmten Fällen eine Modifikation nur eingeschränkt oder gar nicht
möglich. Das ist beispielsweise der Fall, wenn ein Window
modifiziert werden soll, das von dem entsprechenden Task schon geschlossen
wurde.
Als Kontrollkriterium wird primär die Adresse - diese ist als einzige im
System für dieses Objekt eindeutig! - und sekundär der Name des
jeweiligen Objekts herangezogen, also bei Windows die Titelzeile, bei
Tasks der Taskname etc. Tritt in einem der beiden Fälle ein Fehler auf, so
wird die Modifikation mit einer Fehlermeldung abgebrochen. Eine
Modifikation der Objekte wird erst gar nicht begonnen, falls in dem
Namensfeld eines Objektes `RSYS' ein `-' eingetragen hat. Diese Objekte
können nicht eindeutig zugeordnet werden, weshalb diese also auch nicht
modifiziert werden können.
Die Menues
==========
In dem Menü befinden sich neben dem Window-Handling noch die Einträge für
weitere Systemlisten - die aber seltener gebraucht werden - und das Handling
einer internen Liste. Weiterhin können vom Menü aus die Utilities gestartet
und ein paar Änderungen an der Konfiguration von `RSYS' vorgenommen werden.
Hier die Menüpunkte im einzelnen:
Project - Iconify
-----------------
- Menüpunkt: Iconify (TASTENSEQUENZ: `RAMIGA-I')
Aktion: Nach dem Aktivieren dieses Menüpunktes (direkt, ESC-Taste oder
`RAMIGA-I') wird das Hauptfenster geschlossen, und es erscheint auf der
WorkBench ein AppIcon. Wurde `RSYS' vom CLI aus gestartet, wird durch ESC
das Programm beendet.
Project - Help
--------------
- Menüpunkt: Help (TASTENSEQUENZ: `RAMIGA-H')
Aktion: Ab Version 1.3 hat `RSYS' eine vollständige AmigaGuide-Hilfe. Mit
diesem Menüpunkt wird diese Hilfe aktiviert. Dem `Help'-Modus ist ein
eigenes Kapitel gewidmet.
Project - Status
----------------
- Menüpunkt: Status (TASTENSEQUENZ: `-')
Aktion: Nach dem Anklicken dieses Menüpunktes erscheint ein
Systemrequester mit nützlichen Informationen vom aktuellen Stand von
`RSYS'.
Project - Save Configuration
----------------------------
- Menüpunkt: Save Configuration (TASTENSEQUENZ: `-')
Aktion: Ab Version 1.3 kann die aktuelle Einstellung aller Flags sowie
die Höhe der ListView in Zeilen als Icon abgespeichert werden. Bei einem
Start von `RSYS' ohne Icon werden die Standard-Einstellungen verwendet, die
dann mit diesem Menüpunkt dauerhaft als ToolTypes in ein Icon gespeichert
werden können. Neu hinzugekommen ist auch die Angabe der Iconposition
über die ToolTypes. Das AppIcon wird nun dem `RSYS'-Icon entnommen und
die Position entsprechend der Einstellungen in den ToolTypes fixiert.
Project - About...
------------------
- Menüpunkt: About... (TASTENSEQUENZ: `RAMIGA-A')
Aktion: In einem Systemrequester erscheint eine kurze Information
zu diesem Programm und die Adresse des Autors.
Project - Quit RSys...
----------------------
- Menüpunkt: Quit RSys... (TASTENSEQUENZ: `RAMIGA-Q')
Aktion: Das Programm wird mit einer Sicherheitsabfrage beendet. Bei dem
erschei- nenden Systemrequester sind drei Möglichkeiten wählbar:
* `Ja': Das Programm wird beendet.
* `Iconify': Das Hauptfenster verschwindet und ein AppIcon erscheint
auf der WorkBench.
* `Nein': Rückkehr zum Hauptwindow. Wurde `RSYS' von einer Shell
gestartet, entfällt der der Punkt `Iconify'.
Other Lists - Exec - Software Devices
-------------------------------------
- Menüpunkt: Software Devices (TASTENSEQUENZ: `RAMIGA-1')
Beispielausgabe:
Devicename Version OpenCnt
----------------------------------------------
audio.device 37.10 0
^ ^ ^
| | +-- Anzahl der Tasks oder
| | Prozesse, die das
| | Device öffneten
| +-- Versions und Revisionsnummer
+-- Name des Devices
Aktionen: Alle Handler und Treiber werden angezeigt, also die Software
Devices, die Handler oder Treiber für die Hardware darstellen.
Other Lists - Exec - Vectors
----------------------------
- Menüpunkt: Vectors (TASTENSEQUENZ: `RAMIGA-2')
Beispielausgabe:
System Vectors
----------------------------------------------
----- Capture vectors
ColdCapture : 0x00000000
CoolCapture : 0x00000000
WarmCapture : 0x00000000
----- Kick pointer
KickMemPtr : 0x00000000
KickTagPtr : 0x00000000
KickCheckSum : 0x00000000
----- Exec special pointer
Debug entry : 0x00F82D58
ResModules : 0x002003E0
MMU-Lock : 0x00000000
Aktion: Die Capture-Vektoren, Kick-Pointer und die speziellen
Vektoren der ExecBase werden angezeigt. Die Capture-Vektoren können
einen Hinweis auf einen Virus sein, falls diese nicht `NULL' sind.
Other Lists - Exec - CLI processes
----------------------------------
- Menüpunkt: CLI processes (TASTENSEQUENZ: `-')
Beispielausgabe:
CLI nr. Name Pri Stack
----------------------------------------------
CLI 2 ConClip Process 0 4000
^ ^ ^ ^
| | | +-- Stack-Größe des CLI's
| | +-- Priorität des Prozesses
| +-- Name des CLI-Prozesses
+-- Nummer des Prozesses in der Liste der CLI's
Aktion: AmigaOS 2.0 erlaubt ein einfaches Auslesen der geöffneten CLI's.
Alle geöffneten CLI's werden im ListView angezeigt. Die Numerierung ist
systembedingt nicht fortlaufend.
Other Lists - Exec - Semaphores
-------------------------------
- Menüpunkt: Semaphores (TASTENSEQUENZ: `-')
Beispielausgabe:
Semaphore name Pri Ownertask
----------------------------------------------
« SetPatch » 0 <no task>
^ ^ ^
| | +-- Name des Besitzer-Tasks
| | der Semaphore
| +-- Priorität der Semaphore
+-- Name der Semaphore
Aktion: Die Semaphore-Liste der ExecBase wird ausgelesen und dargestellt.
Other Lists - DOS - Volume locks
--------------------------------
- Menüpunkt: Volume locks (TASTENSEQUENZ: `RAMIGA-3')
Beispielliste:
File Access
-----------------------------------
AmigaDOS: READ
^ ^
| +-- Art des Locks:
| READ : Zum Lesen geöffnet,
| auch mehrere Zugriffe
| möglich (shared)
| WRITE: Exklusiv-Zugriff
| -----: Unbekannter Typ
+-- Pfadbezeichnung, auf dem der
Lock existiert
Aktion: Alle vom System reservierten Dateien werden angezeigt. Das sind
alle Verzeichnisse, die durch ein "Open()" oder ein "Lock()" gehalten
werden. Ab Version 1.3 können die Locks, die auf Dateien liegen,
entfernt werden. Handelt es sich um ein Lock auf ein Verzeichnis, können
keine Modifikationen dieses Locks vorgenommen werden. Ein Lock auf ein
Verzeichnis wird meistens von der WorkBench oder von einer Shell gehalten.
Wird dieser Lock entfernt, ist nicht mehr vorhersehbar, was alles
passieren kann. Im schlimmsten Fall greift das System auf ein Verzeichnis
zu, dessen Lock gar nicht mehr existiert. Das kann unter Umständen sogar
zu Festplattenfehler führen. Locks auf Dateien, werden i.a. nur von
Programmen gehalten. Findet nach dem Entfernen eine Schreiboperation
statt, so verläuft diese sozusagen ins Blaue hinein, berührt aber nicht
die Integrität des Speichermediums. Deshalb habe ich nur die
Modifikationen von Datei-Locks zugelassen.
Other Lists - DOS - Resident programs
-------------------------------------
- Menüpunkt: Resident programs (TASTENSEQUENZ: `-')
Beispielausgabe:
Resident name UseCount Type
----------------------------------------------
Alias -2 INTERNAL
^ ^ ^
| | +-- Typ des residenten Kommandos
| | INTERNAL : Ist in einer Shell
| | eingebaut
| | EXTERNAL : Mit `Resident'
| | eingebunden
| | SYSTEM : Systemhandler und
| | Bootshells
| +-- Anzahl der Benutzungen dieses Befehls.
| Ist er -1, handelt es sich um einen
| Handler oder CLI. -2 steht für einen
| eingebauten Befehl.
| Alle Zahlen > 0 geben die
| Benutzungsanzahl an
+-- Name des Handlers oder Befehls
Aktion: Die gezeigte Liste entspricht fast der Ausgabe des Befehls
`resident' des AmigaOS 2.0. Jedoch werden hier *alle* residenten
Programme aufgelistet, auch die, die systemintern vorhanden sind.
Other Lists - DOS - Physical Devices
------------------------------------
- Menüpunkt: Physical Devices (TASTENSEQUENZ: `-')
Beispielausgabe:
Device name Driver/Handler
----------------------------------------------
PIPE: L:Queue-Handler
^ ^
| +-- Name des Handlers oder Treibers
+-- Name des Devices
Aktion: Es werden alle Devices angezeigt, die hardware-bezogen
vorkommen, also Schnittstellen, Festplatten, Floppies, etc.
Other Lists - Graphics - Display Modes
--------------------------------------
- Menüpunkt: Display Modes (TASTENSEQUENZ: `RAMIGA-4')
Beispielliste:
Name Depth MinR MaxR
----------------------------------------------
PAL:High Res Lace 4 32,1 1008,1024
^ ^ ^ ^
| | | +-- Maximale Größe des
| | | Screenrasters
| | +-- Minimale Größe des Screenrasters
| +-- Tiefe des Screens, der Screen hat dann 2^n
| Farben zur Verfügung, in diesem Fall also
| 2^4 = 16 Farben
+-- Name des Monitortreibers
Aktion: Alle im System installierten Monitortreiber werden angezeigt.
Other Lists - Graphics - Blitter Wait Queue
-------------------------------------------
- Menüpunkt: Blitter Wait Queue (TASTENSEQUENZ: `-')
Aktion: Die Tasks, die auf den Blitter warten, werden angezeigt.
Other Lists - Graphics - TOF Wait Queue
---------------------------------------
- Menüpunkt: TOF Wait Queue (TASTENSEQUENZ: `-')
Aktion: Die Tasks, die auf den nächsten Top-Of-Frame warten (also den
nächsten Vertical Blank Interrupt), werden angezeigt.
Other Lists - Diskfont - Fonts in FONTS
---------------------------------------
- Menüpunkt: Fonts in FONTS (TASTENSEQUENZ: `RAMIGA-5')
Beispielausgabe:
Font name Type Y Style
----------------------------------------------
KaraGRANITE.font DISK 55 N C
^ ^ ^ ^
| | | +-- Style des Fonts:
| | | N : Normal
| | | U : Unterstrichen
| | | B : Bold
| | | I : Kursiv (italic)
| | | E : Extended
| | | C : Colour-Font
| | | T: Tagged
| | +-- Größe des Fonts in Pixel
| +-- Typ des Fonts, ROM- oder DISK-Font
+-- Name des Fonts
Aktion: Das logische Verzeichnis `FONTS:' wird ausgelesen und die
ermittelten Fonts angezeigt. Dazu gehören auch die Fonts, die bereits in
das System eingebunden sind. Nach einem Anklicken eines ListView-Eintrages
wird der Font in einem eigenen Fenster angezeigt.
Other Lists - Intuition - Public Screens
----------------------------------------
- Menüpunkt: Intuition - Public Screens (TASTENSEQUENZ: `-')
Beispielausgabe:
Address Name VCnt SigTask
----------------------------------------------
003B8708 Workbench 2 <no task>
^ ^ ^ ^
| | | +-- Name des dazugehörigen Tasks
| | +-- Visitor counter (Anzahl der
| | Windows auf diesem Screen)
| +-- Name des Public Screens
+-- Adresse des Public Screen-Nodes in der Systemliste
Aktion: Hier werden alle im System geöffneten Public Screens, also
die Screens, die öffentlich und für jedes Programm zugänglich
sind, angezeigt. Die Anzeige besteht aus der Adresse, dem Namen, der
Visitor-Anzahl (die Anzahl der geöffneten Windows auf diesem Screen) und
dem zugehörigen Signal-Task, die aus der `PublicScreenNode'-Struktur
ausgelesen werden können.
Other Lists - Intuition - Gadgets
---------------------------------
- Menüpunkt: Gadgets (TASTENSEQUENZ: `-')
Beispielausgabe:
Gadget text Typ PosX PosY W H
----------------------------------------------
* SCR: Workbench Screen
<has image> SYSWUP -22 0 23 11
** WIN: RU 1.2 FreeWare!
Ja REQBOO 14 26 35 9
^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | +-- Höhe des Gadgets
| | | | | | +-- Breite des Gadgets
| | | | | +-- Y-Position der linken oberen
| | | | | Ecke des Gadgets
| | | | +-- X-Position der linken oberen
| | | | Ecke des Gadgets
| | | +-- Aktivierungstyp des Gadgets:
| | | WDR: Window dragging
| | | SDR: Screen dragging
| | | WUP: Window upfront
| | | SUP: Screen upfront
| | | WDO: Window downback
| | | SDO: Screen downback
| | | CLO: Close Gadget
| | | BOO: Boolean Gadget
| | | G02: Dummy typ
| | | PRO: Proportional Gadget
| | | STR: String Gadget
| | | CUS: Custom Gadget
| | | SIZ: Sizing Gadget
| | | UNK: Unbekannter Typ
| | +-- Objekttyp des Gadgets:
| | SYS: System Gadget
| | SCR: Screen Gadget
| | GZZ: Gimmezerozero Gadget
| | REQ: Requester Gadget
| | CUS: Andere Gadgets
| +-- Window oder Screen-Titelzeile
+-- Gadgettext, falls einer existiert, sonst `<has image>' oder
ein `-', falls ein Image existiert oder kein Text vorhanden
ist.
Aktion: Nach dem Anklicken werden alle Gadgets auf allen Screens und in
allen Windows ermittelt und die wichtigsten Daten angezeigt. Während
dieser Aktion kann es passieren, daß man nicht weiterarbeiten kann. Das
ist normal! Damit die Intuition-Listen systemkonform durchsucht werden
können, muß während dieser Zeit die IntuitionBase mit dem Paar
"LockIBase()/UnlockIBase()" gesperrt werden. Der Zeitraum der Sperrung
ist aber i.a. so kurz, daß er vom Benutzer kaum wahrgenommen wird.
Other Lists - Preferences - Preferences Data
--------------------------------------------
- Menüpunkt: Preferences Data (TASTENSEQUENZ: `RAMIGA-7')
Beispielausgabe:
Preferences
----------------------------------------------
----- Input/Keyboard:
Keyboard repeat speed : 0 sec 6000 µsec
Keyboard repeat delay : 0 sec 400000 µsec
Double click time : 0 sec 800000 µsec
----- Pointer
"Hot spot" X : -1
"Hot spot" Y : 0
Pointer Sprite Col 0 : 0x0E44
Pointer Sprite Col 1 : 0x0000
Pointer Sprite Col 2 : 0x0EEC
Pointer Sensitivity : 1
----- Workbench
Height default font : 8
Standard Color 0 : 0x0AAA
Standard Color 1 : 0x0000
Standard Color 2 : 0x0FFF
Standard Color 3 : 0x009A
View X-Offset : -26
View Y-Offset : -7
View init offset X : 129
View init offset Y : 44
Height default font : 8
CLI availability : CLI enabled
Workbench interlaced : No
Override WB width : 0
Override WB height : 0
Override WB depth : 0
Extension Info size : 0
----- Printer
Printer port : Parallel port
Printer type : Custom
Printer Driver : HP_LaserJet
Print pitch : 0
Print quality : Letter
Lines per inch : 6 LPI
Left margin : 0
Right margin : 75 Chars
Print image : Positive
Print aspect : Horizontal
Print shade : Color
Print Threshold : 7
Paper length : 66 Rows
Paper type : Single paper
Temp file for printer :
Affect Rows/Columns : 10
User preference flags : 0x0000080F
Max width of picture : 0 inch
Max height of picture : 0 inch
Offset of picture : 0 inch
Print density : 4
----- Serial configuration
Baud rate : MIDI (31.250 baud)
Read bits : 8
Write bits : 8
Stop bits : 1
Parity : None
Handshake : RTS/CTS
Aktion: Die Preferences-Struktur wird ausgelesen und mit Klartext versehen
angezeigt.
Other Lists - Preferences - Printer data
----------------------------------------
- Menüpunkt: Preferences - Printer data (TASTENSEQUENZ: `-')
Beispielausgabe:
Printer data
----------------------------------------------
Printer name : HP_LaserJet
Version : 35
Revision : 59
Printer class : 1
Color class : 1
Print columns : 0
Char sets : 0
Print head pins : 1
Max X-dots in dump : 2325 dots
Max Y-dots in dump : 3198 dots
Density X : 300 dots/inch
Density Y : 300 dots/inch
Timeout : 60 sec
Aktion: Alle Daten in der Preferences-Datei, speziell die des
Druckertreibers, werden angezeigt.
Other Lists - Preferences - ENV-Variables
-----------------------------------------
- Menüpunkt: ENV-Variables (TASTENSEQUENZ: `-')
Beispielausgabe:
ENV-Variable Content
----------------------------------------------
FREE_DRIVES RAM:,df0:,df1:,vd0:,dh0:,dh1
^ ^
| +-- Inhalt der Environmentvariablen
| <no text> : Die Variable ist keine Textdatei
| <dir> : Ein weiteres `ENV:'-Verzeichnis
+-- Name der Variablen
Aktion: Das logische Verzeichnis `ENV:' wird ausgelesen und die Inhalte
der Environmentvariablen im ListView dargestellt. Hierbei wird davon
ausgegangen, daß sich in einer `ENV'-Variablen *eine* Zeile befindet.
Sollten sich mehr als eine Zeile in der entsprechenden Datei befinden,
werden die nachfolgenden Zeilen nicht ausgelesen.
Ab Version 1.2 werden die Dateien überprüft, ob eine Textdatei vorliegt.
Es kommt immer mal vor, daß auch Binärdateien im `ENV:'-Verzeichnis zu
finden sind. Die Ausgabe dieser binären Daten ist etwas unsauber.
Other Lists - Other libraries - Commodities
-------------------------------------------
- Menüpunkt: Commodities (TASTENSEQUENZ: `RAMIGA-8')
Beispielausgabe:
Commodity name Prio
----------------------------------------------
RSys 0
^ ^
| +-- Priorität des Brokereintrags
+-- Name des Brokers
Aktion: Ich habe einen legalen Weg herausgefunden, wie man sich eine
Liste aller Commodity-Einträge besorgen kann. Dazu verwende ich einfach
den Broker von RSys. Beim Einrichten des Brokers wird ein Zeiger auf ein
CxObj zurückgegeben. Diesen *caste* (konvertiere) ich auf einen `struct
Node'-Zeiger um und erhalte damit, analog zu den Input-Handlern, einen
Einsprung in die Liste der angemeldeten Broker-Objekte! Jetzt brauche ich
nur noch zu dem Anfang der Liste zu hangeln (Commodore erhalte uns die
doppelt verketteten Listen! :-)) und von dort aus die Liste erneut
durchzuscannen. Schon habe ich meine Liste! Und alles durch eine
`undokumentierte Vermutung', ich liebe `C'!
Other Lists - Other libraries - Amigaguide XRef
-----------------------------------------------
- Menüpunkt: Amigaguide XRef (TASTENSEQUENZ: `RAMIGA-9')
Beispielliste:
XRef keyword Type File Line
----------------------------------------------
Gadget STRU +intuition.h 216
^ ^ ^^ ^
| | || +-- Zeile des Includefiles,
| | || in der die Struktur
| | || vorkommt
| | ++-- Dateibezeichnung Referenzfiles
| | Falls die Bezeichnung länger ist, wird
| | ein `+' anstelle des Pfades gesetzt
| +-- Der Typ des Eintrags. Hier können
| folgende Werte stehen:
| `LINK' : Amigaguide Link
| `FUNC' : Funktionsbeschreibung
| (z.B. C-Routine)
| `COMM' : Befehlsbeschreibung
| `INCL' : Include-Datei eines Compilers
| `MACR' : Macro-Beschreibung
| `STRU' : Struktur-Beschreibung
| (z.B struct Gadget)
| `FIEL' : Ein Feld einer Struktur
| `TYPD' : Datentyp-Beschreibung
| (z.B. typedef)
| `DEFI' : #define-Macro-Beschreibung
+-- Schlüsselwort des Objektes
Aktion: Mit dem Befehl LoadXRef des Amigaguide-Entwicklersystems können
Kreuzreferenzen in den Speicher des Amigas geladen werden. Diese stehen
dann bei jeder Amigaguide Session dem Benutzer zur Verfügung. Welche
Informationen geladen sind, kann man mit diesem Menüpunkt erfahren.
Actions - CRC Check...
----------------------
- Menüpunkt: CRC Check... (TASTENSEQUENZ: `-')
Aktion: Es wird die Utility `CRC Check' gestartet. Näheres dort.
Actions - Crypt File...
-----------------------
- Menüpunkt: Crypt File... (TASTENSEQUENZ: `-')
Es wird die Utility `Crypt File' gestartet. Näheres dort.
Actions - List Hunks...
-----------------------
- Menüpunkt: List Hunks... (TASTENSEQUENZ: `-')
Es wird die Utility `List Hunks' gestartet. Näheres dort.
Actions - Find File...
----------------------
- Menüpunkt: Find File... (TASTENSEQUENZ: `-')
Es wird die Utility `Find File' gestartet. Näheres dort.
Actions - Format Disk...
------------------------
- Menüpunkt: Format Disk... (TASTENSEQUENZ: `-')
Es wird die Utility `Format Disk' gestartet. Näheres dort.
Actions - Save windows...
-------------------------
- Menüpunkt: Save windows... (TASTENSEQUENZ: `-')
Es wird die Utility `Save Windows' gestartet. Näheres dort.
Actions - Check Libraries
-------------------------
- Menüpunkt: Check Libraries (TASTENSEQUENZ: `-')
Alle im ROM angelegten Libraries werden gecheckt, ob sie von anderen
Programmen gepatcht wurden. Sehr nützlich, um eventuell installierte
Viren aufzuspüren. Die Daten werden aus einer externen Datei gelesen und
im Klartext ausgegeben. Mit einem kleinen `REXX'-Programm können diese
Daten aus den `FD'-Files extrahiert werden.
Internal List - Save current list
---------------------------------
- Menüpunkt: Save current list (TASTENSEQUENZ: `RAMIGA-L')
Aktion: Die angezeigte Liste wird in eine `RSYS'-interne Liste
kopiert und gespeichert. Der Inhalt bleibt erhalten, bis eine
neue Liste abgespeichert wird, der Menüpunkt `Kill saved list'
gewählt wurde oder das Programm beendet wird.
Internal List - Restore saved list
----------------------------------
- Menüpunkt: Restore saved list (TASTENSEQUENZ: `RAMIGA-R')
Aktion: Die `RSYS'-interne Liste wird in das ListView eingetragen. Die
ursprüngliche Liste kann durch ein nochmaliges Anklicken des
entsprechenden Gadgets wieder erzeugt werden. Die `RSYS'-interne Liste
bleibt dabei erhalten.
Internal List - Kill saved list
-------------------------------
- Menüpunkt: Kill saved list (TASTENSEQUENZ: `-')
Aktion: Eine gespeicherte `RSYS'-interne Liste wird gelöscht und
die damit verbundenen Speicherbereiche freigegeben.
Flushing - Flush libraries
--------------------------
- Menüpunkt: Flush libraries (TASTENSEQUENZ: `-')
Aktion: Entfernt alle Libraries aus dem System, die einen Open-Count
von 0 haben. Diese sind geschlossen und entfernen sich meistens nicht
selbst aus dem System.
Flushing - Flush fonts
----------------------
- Menüpunkt: Flush fonts (TASTENSEQUENZ: `-')
Aktion: Entfernt alle Fonts aus dem System, die nicht mehr verwendet
werden.
Flushing - Flush all libraries and fonts
----------------------------------------
- Menüpunkt: Flush all libraries and fonts (TASTENSEQUENZ: `-')
Aktion: Entspricht beiden Menüpunkten `Flush Libraries' und `Flush
Fonts'.
Clip - Clip entry...
--------------------
- Menüpunkt: Clip entry... (TASTENSEQUENZ: `RAMIGA-C')
Aktion: Nach Anwahl dieses Menüpunktes kann ein Eintrag im Hauptfenster
von `RSYS' angeklickt werden. Dieser Eintrag wird dann vom Programm ins
Clipboard übernommen und kann von anderen Programmen gelesen und
weiterverwendet werden.
Clip - Clip list
----------------
- Menüpunkt: Clip list (TASTENSEQUENZ: `-')
Aktion: Mit diesem Menüpunkt kann die ganze angezeigte Liste ins
Clipboard kopiert werden.
Flags - Fast Mode
-----------------
- Menüpunkt: Fast Mode (TASTENSEQUENZ: `RAMIGA-F')
Aktion: Ist dieser Modus aktiviert, wird das ListView beim Erzeugen
der Liste nicht aktualisiert, sondern erst, nachdem die Liste erstellt
worden ist. Ist dieser Modus nicht aktiviert, wird nach jedem Erstellen
eines Eintrags das ListView aktualisiert. Default ist `EIN'.
Flags - Sorting
---------------
- Menüpunkt: Sorting (TASTENSEQUENZ: `RAMIGA-O')
Aktion: Ist das Sorting aktiviert, sortiert `RSYS' automatisch die
Einträge des ListViews. Auf manche Listen hat dieses Flag keinen
Einfluß (z.B. Memory), da es dort auf die systemgegebene
Reihenfolge der Daten ankommt. Default ist `EIN'.
Flags - Working bar
-------------------
- Menüpunkt: Working bar (TASTENSEQUENZ: `RAMIGA-B')
Aktion: Mit diesem Flag kann die Anzeige eines Statusbalkens umgeschaltet
werden. Während eine Systemliste im ListView erzeugt wird, zeigt der
Balken immer den entsprechenden Balkenabschnitt an. Als Balkenbereich wird
das `Informationen / Messages'-Gadget verwendet. Default ist `AUS'.
Flags - Auto front window
-------------------------
- Menüpunkt: Auto front window (TASTENSEQUENZ: `RAMIGA-Z')
Aktion: Ist dieses Flag aktiviert, werden das Hauptfenster und
alle anderen Fenster von `RSYS' automatisch nach vorne geholt, falls
sie geöffnet oder *gezipt* wurden.
Flags - Mouse window
--------------------
- Menüpunkt: Mouse window (TASTENSEQUENZ: `RAMIGA-M')
Aktion: Wenn diese Option angewählt wurde, wird jedes Fenster,
das von `RSYS' geöffnet wird, zentriert unter dem Mauszeiger erscheinen.
Flags - Topaz Font
------------------
- Menüpunkt: Topaz Font (TASTENSEQUENZ: `RAMIGA-T')
Aktion: Wurde als System-Screen-Font ein Proportionalfont gewählt,
sieht die Ausgabe im ListView etwas zerrissen aus, da die Anzeige
nur mit Leerzeichen formatiert werden kann. Schaltet man diese Option
ein, wird das Hauptfenster geschlossen und `RSYS' erscheint
mit dem `Topaz-8'-Systemfont.
Flags - Speaking
----------------
- Menüpunkt: Speaking (TASTENSEQUENZ: `RAMIGA-N')
Aktion: Ist `Speaking' eingeschaltet, werden die Ausgaben im
`Informationen / Message'-Bereich auch über das `Narrator'-Device, also
die Sprachausgabe, ausgegeben.
Flags - Save asking
-------------------
- Menüpunkt: Save asking (TASTENSEQUENZ: `-')
Aktion: Ist dieses Menüflag gesetzt, werden alle Sicherheitsabfragen von
`RSYS' unterdrückt. Genauer: es werden alle Ja-Nein-Abfragen unterdrückt.
*VORSICHT*
Auch Sicherheitsabfragen, wie *Wollen Sie diesen Task killen?*
werden anstandslos mit *Ja* beantwortet!!!
Flags - Text formatter
----------------------
- Menüpunkt: Text formatter (TASTENSEQUENZ: `-')
Aktion: Mit diesem Schalter kann man die Verwendung des Text-Formatters
beim Abspeichern einer `RSYS'-Liste ein- oder abschalten.
Ext. Data - Reload action file...
---------------------------------
- Menüpunkt: Reload action file... (TASTENSEQUENZ: `-')
Aktion: Der Action-File kann extern mit einem Editor bearbeitet werden.
Über diesen Menüpunkt kann er dann nach der Bearbeitung von `RSYS'
eingeladen werden.
Ext. Data - Reload hardware datas...
------------------------------------
- Menüpunkt: Reload hardware datas... (TASTENSEQUENZ: `-')
Aktion: Mit einem mitgeliefertem Tool (`HW') kann die Datendatei mit den
Hardware-Kenndaten modifiziert und erweitert werden. Über diesen
Menüpunkt können die Daten erneut gelesen werden.
Ext. Data - Reload library offsets...
-------------------------------------
- Menüpunkt: Reload library offsets... (TASTENSEQUENZ: `-')
Aktion: Hiermit können die zu untersuchenden Library-Offsets erneut
eingelesen werden. Alle Einträge in dieser Datei werden dazu verwendet,
um die entsprechenden Library-Offsets zu testen. Das ist besonders dann von
Nutzen, wenn man einen Virus im System vermutet.
Ext. Data - Reload AGuide context nodes...
------------------------------------------
- Menüpunkt: Reload AGuide context nodes... (TASTENSEQUENZ: `-')
Aktion: Hiermit können die `AmigaGuide'-Nodes erneut eingelesen werden.
Mit ihnen ist es möglich, im `Help'-Modus die entsprechende Stelle im
AGuide-Dokument zu lesen.
Search - Find next
------------------
- Menüpunkt: Find next (TASTENSEQUENZ: `N')
Aktion: Nach der Anwahl dieses Menüpunktes wird der zuletzt eingetragene
Suchbegriff in der aktuellen Liste des Hauptfensters gesucht. Die
Suchrichtung ist vorwärts.
Search - Find previous
----------------------
- Menüpunkt: Find previous (TASTENSEQUENZ: `P')
Aktion: Nach der Anwahl dieses Menüpunktes wird der zuletzt eingetragene
Suchbegriff in der aktuellen Liste des Hauptfensters gesucht. Die
Suchrichtung ist rückwärts.
Search - Search...
------------------
- Menüpunkt: Search... (TASTENSEQUENZ: `S')
Aktion: Nach der Anwahl dieses Menüpunktes erscheint ein kleines
Fenster, in welchem der Suchstring eingegeben werden kann.
Die Utilities von RSys
**********************
In diesem Kapitel werden nun alle Utilities von `RSYS' beschrieben. Alle
Utilities können per HotKey aufgerufen werden. In späteren Versionen von
`RSYS' werden sie als eigenständige Tasks laufen, sodaß auch mehrere
Utilities gleichzeitig laufen können.
CRC-Check - Berechnung von Checksummen
======================================
Mit dieser kleinen Utility kann die `CRC-Checksumme' von beliebigen Dateien
berechnet werden. Entsprechend der Größe der Datei, dessen CRC berechnet
werden soll, muß die `CRC-16'- oder die `CRC-32'-Methode gewählt werden.
Ich habe mehrere Programme, die CRC-Summen berechnen, zum Vergleich mit
meinen Routinen gestartet. Alle Programme gaben für ein und dieselbe Datei
andere Werte aus, als meine Routine. Ich suche den Fehler heute noch. Wenn
sich also eine hilfreiche Seele finden sollte, die den Fehler findet, dieser
ist eine Tüte Gummibärchen sicher `:-)'
Das erscheinende Window enthält mehrere Steuerelemente, die jetzt im
einzelnen besprochen werden.
Das File-Gadget
---------------
- Text-Gadget: File
In diesem Text-Gadget wird der Dateiname der ausgewählten Datei, deren
`CRC'-Summe berechnet werden soll, angezeigt.
Das Type-Gadget
---------------
- Cycle-Gadget: Type
Mit diesem Gadget kann die zu verwendete Berechnungsart (`CRC-16' oder
`CRC-32') gewählt werden.
Das Select-Gadget
-----------------
- Gadget: Select
Nach dem Anklicken dieses Gadgets erscheint ein FileRequester, der zu
einer Eingabe einer Datei auffordert. Wird eine existierende Datei
angewählt, wird sofort das `File'-Gadget aktualisiert.
Das CRC-Gadget
--------------
- Text-Gadget: CRC
In diesem Gadget wird die berechnete Checksumme in Hexadezimalschreibweise
dargestellt.
Das Compute-Gadget
------------------
- Gadget: Compute
Das Gadget startet die Berechnung der `CRC'-Checksumme.
Crypt File - Verschluesseln von Dateien
=======================================
Bei der Verschlüsselung der Daten werden zwei Methoden verwendet. Die
`ROT 13'-Methode ist ein einfaches Verschlüsselungsverfahren, das die
Buchstaben eines Textes einfach um 13 Zeichen nach vorn oder zurück
gezählte Buchstaben macht. Dazu ein Beispiel: aus der Zeile
"Das ist ein Satz, der 1 mal kodiert werden soll!"
34 68 97 115 32 105 115 116 32 101 105 110 32 83 97 116 122 44 32 100 101
114 32 49 32 109 97 108 32 107 111 100 105 101 114 116 32 119 101 114 100
101 110 32 115 111 108 108 33 34
macht das `ROT 13'-Verfahren
"Qnf vfg rva Fngm, qre 1 zny xbqvreg jreqra fbyy!"
34 81 110 102 32 118 102 103 32 114 118 97 32 70 110 103 109 44 32 113 114
101 32 49 32 122 110 121 32 120 98 113 118 114 101 103 32 106 114 101 113
114 97 32 102 98 121 121 33 34
Darunter habe ich mal die entsprechenden ASCII-Kodierungen geschrieben. Es
ist deutlich zu erkennen, daß nur Buchstaben kodiert (verschoben) werden.
Interpunktionen und Zahlen werden nicht berücksichtigt.
Das zweite Verfahren basiert auf einen zellularen Automaten ähnlich dem der
Spielsimulation `Life'. Dabei wird ein Ring von Zellen angelegt, der dann
durch ein vorgegebenes Paßwort mit Nummern aufgefüllt wird. Mit diesen
Nummern schließlich, wird eine Datei kodiert. Diese Methode stammt von der
Verschlüsselungsmethode, die in Olaf "Olsen" Barthels `term' zur Kodierung
des Telefonbuches verwendet wird.
`Anm.:' Das Paßwort ist überaus *WICHTIG*! Es sollte erstens nie
vergessen und zweitens ein echtes Paßwort verwendet werden. Das
Paßwort-Gadget sollte also nie leer sein, da sonst die Methode zufällige
Verschlüsselungen erzeugt und diese Datei nie wieder restauriert werden
kann!
Im weiteren werden die Bedienungselemente des `Crypt'-Windows vorgestellt.
Das Source-Gadget und Select
----------------------------
- Gadget: Source/Select
Mit diesem Gadget kann mit einem FileRequester die Datei ausgewählt
werden, die verschlüsselt werden soll. Der Dateiname kann direkt
eingegeben werden oder über `Select' per FileRequester.
Das Dest-Gadget und Select
--------------------------
- String-Gadget: Dest/Select
Mit diesem Gadget kann mit einem FileRequester die Datei ausgewählt
werden, in der die verschlüsselten Daten abgespeichert werden sollen. Der
Dateiname kann direkt eingegeben werden oder über `Select' per
FileRequester.
Das Passwd-Gadget
-----------------
- String-Gadget: Passwd
Dieses String-Gadget enthält das Paßwort zum Verschlüsseln der Datei
nach dem Verfahren mit dem `zellularen Automaten'. Das Paßwort ist
zwingend erforderlich, jedoch wird die Korrektheit nicht überprüft. Wird
also keins angegeben, so ist das eine *Einbahnstraßen-Verschlüsselung*!
Die Datei kann nie wieder restauriert werden! Dieses Gadget ist
abgeschaltet, falls die `ROT13'-Methode verwendet wird.
Das Crypt-ROT13-Gadget
----------------------
- Cycle-Gadget: Crypt-ROT13
Hiermit kann die Methode gewählt werden, mit der die Daten verschlüsselt
werden sollen.
Das Encrypt-Gadget
------------------
- Gadget: Encrypt
Mit diesem Gadget wird die Verschlüsselung der Daten gestartet.
Das Decrypt-Gadget
------------------
- Gadget: Decrypt
Mit diesem Gadget wird die Entschlüsselung der Daten gestartet.
List Hunks - Hunk-Struktur ermitteln
====================================
Es kommt immer mal vor, daß man sich für den Aufbau von Dateien
beschäftigt. Ein wichtige Dateiart ist hierbei die ladbare oder ausführbare
Datei. Diese Dateien können vom System in den Arbeitsspeicher geladen und
direkt ausgeführt werden.
Damit dieses korrekt vom System durchgeführt werden kann, müssen die
Dateien (Executables) einen bestimmten Aufbau besitzen, die sogenannte
`Hunk-Struktur'. Eine Beschreibung dieser Hunk-Struktur würde an dieser Stelle
zu weit führen. Hierbei sei auf weiterführende Literatur verwiesen, die diese
Struktur in allen Einzelheiten erläutert.
Mit dieser Utility kann die Hunk-Struktur jeder ladbaren Datei ermittelt und
angezeigt werden. Zu diesen Dateien gehören beispielsweise Libraries,
Executables, Font-Dateien und Objekt-Bibliotheken. Desweiteren können auch
Fehler in der Hunk-Struktur angezeigt werden. Bei einem eventuell aufgetretenen
Fehler wird noch fünfmal versucht, einen korrekten Hunk-Eintrag zu finden,
danach wird abgebrochen. Die Anzeige der Struktur kann jederzeit mit einem
Klick auf das `CloseGadget' abgebrochen werden.
Nun zu der Beschreibung der einzelnen Gadgets.
Das ListView
------------
- ListView: ListView
In diesem ListView wird die Hunk-Struktur in übersichtlicher Form
dargestellt. In der ersten Zeile stehen der Name der Datei und die Größe.
Dannach kommt hierarchisch angeordnet der Aufbau der Datei. Hier als
Beispiel das Hunk-Listing des Programms `RSYS' selbst.
File name : cprogs2:RSysDir/RSys
File size : 140156
hunk_header (o: $0,#0 t: $3F3,#1011)
Count hunks : #3
First hunk : #0
Last hunk : #2
Hunk #0, Length $1DE8C, #122508
Hunk #1, Length $4D58, #19800
Hunk #2, Length $4, #4
hunk_code (o: $20,#32 t: $3E9,#1001)
Size: $1DE8C, #122508 (MEMF_FAST)
hunk_reloc32 (o: $1DEB4,#122548 t: $3EC,#1004)
#17 offsets in Hunk #0
#2 offsets in Hunk #1
hunk_end (o: $1DF18,#122648 t: $3F2,#1010)
hunk_data (o: $1DF1C,#122652 t: $3EA,#1002)
Size: $365C, #13916 (MEMF_FAST)
hunk_reloc32 (o: $21580,#136576 t: $3EC,#1004)
#17 offsets in Hunk #1
#868 offsets in Hunk #0
hunk_end (o: $2236C,#140140 t: $3F2,#1010)
hunk_bss (o: $22370,#140144 t: $3EB,#1003)
Size: $4, #4 (MEMF_FAST)
hunk_end (o: $22378,#140152 t: $3F2,#1010)
Das Load-Gadget
---------------
- Gadget: Load
Es erscheint ein FileRequester, mit dem die ladbare Datei ausgewählt
werden kann. Danach wird die Struktur analysiert und als Liste angezeigt.
Das Save-List-Gadget
--------------------
- Gadget: Save List
Mit einem FileRequester kann eine Datei ausgewählt werden, in der die
Liste abgespeichert werden soll. Ist der `Text-Formatter' aktiviert,
erscheint nach einer postiven Auswahl das `Text-Formatter'-Window.
Find File - Suche nach Dateien
==============================
Es gibt viele Programme, die das komfortable Suchen nach Dateien in
Filesystemen unterstützen. Allerdings sind einige Programme mit Sonder- und
Spezialfunktionen überladen, sodaß man schon eine Menge Hintergrundwissen
einbringen muß, um die Programm überhaupt korrekt bedienen zu können. Dem
habe ich hoffentlich Abhilfe schaffen können. Einfach, klein und fein macht
diese Utility genau das, was sie soll: Dateien suchen.
Diese Utility arbeitet intensiv mit der Funktion "ExAll()" und den
Funktionen "MatchPattern()/MatchPatternNoCase()" der DOS-Library. Dabei werden
zuächst alle Dateien bestimmt und währenddessen untersucht, ob es sich
jeweils um ein Verzeichnis oder eine Datei handelt. Trifft dann auch das
Suchmuster zu, wird es in das ListView eingetragen.
Hier eine Beschreibung der Bedienungselemente.
Das Devices-ListView
--------------------
- ListView: Devices
In diesem ListView stehen alle angemeldeten Devices und Assigns. Wenn
ein Eintrag angeklickt wird, erscheint der Eintrag in dem danebenliegenden
ListView.
Das Selected Devices-ListView
-----------------------------
- ListView: Selected Devices
Damit werden alle die Verzeichnisse angewählt auf denen Dateien gesucht
werden sollen. Jeder Eintrag, der in den beiden ListViews angeklickt wird,
erscheint automatisch in dem anderen ListView. Bei einem Eintrag mit
einem `-' davor handelt es sich um ein Assign. Ich habe diese
Kennzeichnung deshalb so gewählt, weil ich dann entsprechend die
Einträge sortieren kann. Erst die *echten*, dann die *logischen* Devices.
Das Case-No case-Gadget
-----------------------
- Cycle-Gadget: Case/No case
Hier kann gewählt werden, ob die Dateien *case sensitive* (Groß- und
Kleinschreibung wird berücksichtigt) oder *case insensitive* (Groß- und
Kleinschreibung werden nicht unterschieden) gesucht werden. Lautet z.B.
das Suchmuster `Test.exe', so wird mit `No case sense' sowohl die Datei
`Test.exe', als auch die Datei `TeSt.ExE' gefunden.
Sel all und Sel none
--------------------
- Gadget: Sel all/Sel none
Damit können alle Einträge vom linken ListView in das rechte gebracht
werden (`Sel all': alle Verzeichnisse werden durchsucht) und umgekehrt
(`Sel none': Kein Verzeichnis soll durchsucht werden).
Das Start-Stop Gadget
---------------------
- Gadget: Start/Stop
Wurden Verzeichnisse ausgewählt und im Pattern-Gadget ein Suchmuster
eingegeben, so ist dieses Gadget anwählbar und startet die Suche in den
Verzeichnissen des `Selected Devices'-ListViews. Wird das Gadget während
eine Suche angeklickt, wird nach einer Sicherheitabfrage der Suchvorgang
abgebrochen.
Das Save found list-Gadget
--------------------------
- Gadget: Save found list
Nach der Anwahl erscheint ein Filerequester, in dem die Namen der
gefundenen Dateien in eine auszuwählende Datei abgespeichert werden
können. Ist der `Text-Formatter' aktiviert, erscheint nach einer postiven
Auswahl das `Text-Formatter'-Window.
Das Pattern-Gadget
------------------
- String-Gadget: Pattern
Hier kann ein Suchmuster (Dateiname oder Pattern) eingegeben werden.
Hierbei gelten die üblichen Wildcards und Suchmuster des AmigaOS.
Das Dateityp-Gadget
-------------------
- Cycle-Gadget: Dirs + Files/Files/Directories
Hier kann gewählt werden, was für ein Typ von Datei gefunden werden
soll.
Das Found files-dirs-Gadget
---------------------------
- ListView: Found files/dirs
In diesem ListView erscheinen alle gefunden Einträge mit vollständiger
Pfadbezeichnung. Diese Liste kann nach dem Anklicken des `Save found
list'-Gadgets in eine Datei abgespeichert werden.
Format Disk - Format-Schnittstelle
==================================
Mit `Format Disk' wird eine kleine Schnittstelle zum `Format'-Befehl des
AmigaDOS angeboten. Die einzelnen Gadgets werden im folgenden näher
beschrieben.
Das Format-Gadget und Select
----------------------------
- String-Gadget: Format-Gadget/Select
In diesem Gadget steht der vollständige Pfadprogrammname des zu
verwendenden `Format'-Befehls. Dieser lautet üblicherweise
`SYS:System/Format'.
Mit dem nebenstehenden `Select'-Gadget kann das `Format'-Programm mit
einem Filerequester ausgewählt werden.
Das Devs-ListView
-----------------
- ListView: Devices
In diesem ListView erscheinen alle formatierbaren Devices alphabetisch
geordnet. Das ausgewählte Device wird dann im zugehörigen
Textgadget darunter angezeigt.
Das Disk label-Gadget
---------------------
- Gadget: Disk label
Hier wird der Name des Mediums (voreingestellt und systemkonform
`Empty') eingetragen.
Das Icons-No Icons-Gadget
-------------------------
- Cycle-Gadget: Icons/No Icons
Mit dieser Einstellung wird festgelegt, ob der `TrashCan' samt Icon nach
der Formatierung auf die frische Diskette kopiert werden soll.
Das OFS-FFS-Gadget
------------------
- Cycle-Gadget: OFS/FFS
Damit wird festgelegt, ob die Diskette mit dem neuen FastFileSystem des
AmigaOS 2.0 formatiert werden soll, oder im alten Datenformat.
Das No international-International-Gadget
-----------------------------------------
- Cycle-Gadget: No international/International
Hiermit wird das Handling der länderspezifischen Sonderzeichen in
Dateinamen festgelegt.
Das Befehls-Gadget
------------------
- String-Gadget: Befehls-Gadget
In diesem Stringgadget ohne Namen steht der vollständige Befehl, der
nach Festlegung aller Kriterien als eigenständiger Prozeß ausgeführt
wird.
Das Format-Gadget
-----------------
- Gadget: Format
Damit wird der `Format'-Befehl in einem Shell-Window aufgerufen.
Das Quick-Gadget
----------------
- Gadget: Quick
Damit wird der `Format'-Befehl in einem Shell-Window aufgerufen. Zuvor
wird die Option `QUICK' an den Befehl drangehängt. Diese Option startet
die Formatierung des Directory-Bereiches der Diskette, also nicht der
ganzen Diskette.
Save Windows - IFF-Dateien von Windows
======================================
Hierbei kam auch eine Routine zum Einsatz, die ich von Olsens `term' geratzt
habe. Leider funktioniert Olsens Routine nicht mit allen Fenstern, was an der
Verwendung der Funktion "ClipBlit()" liegt, die zwar die ausgewählte BitMap
eines Windows berücksichtigt, aber die überlappenden Bereiche anderer Fenster
mit Datenmüll füllt. Außerdem verwendet Olsen die BitMap des zu einem
Fenster gehörenden Screen-RastPorts anstelle des Window-RastPorts.
Dieses Problem der Überlappung habe ich durch die Verwendung der
Routinen "BltBitMap()" und "WindowToFront()" behoben. Damit wird das zu
speichernde Fenster nach vorne geholt, weswegen auch keine Überlappungen mit
anderen Fenstern auftreten. Dieses Verfahren funktioniert natürlich nicht
mit Backdrop-Fenstern.
Es muß aber eine Möglichkeit geben, *nur* den Fensterinhalt abspeichern
zu können. Immerhin kann es die `DumpRastPort'-Routine des `printer.device'
auch. Wer also sachdienliche Hinweise zu diesem Thema hat, möge sich
bitte mit mir in Verbindung setzen.
Das Windows-ListView
--------------------
- Gadget: Windows
In diesem ListView erscheinen alle geöffneten Windows, die im System
bekannt sind. Dabei werden auch die aufgeführt, die auf anderen Screens
als dem WorkBench Screen geöffnet wurden.
Das IFF File-Gadget
-------------------
- Gadget: IFF File
Wurde ein Fenster angewählt, wird dieses Gadget aktiviert. Nach dem
Anklicken erscheint ein Filerequester mit der Aufforderung, eine Datei
auszuwählen, in der das angewählte Window als IFF-Datei abgespeichert
werden soll.
Das Rescan windows-Gadget
-------------------------
- Gadget: Rescan windows
Damit kann die Window-Liste aktualisiert werden. Dies geschieht nach dem
Abspeichern eines Windows automatisch.
Check Libraries - Testen der ROM-Libraries
==========================================
Alle im ROM angelegten Libraries werden gecheckt, ob sie von anderen
Programmen gepatcht wurden. Sehr nützlich, um eventuell installierte Viren
aufzuspüren.
Dazu wird eine externe Datei verwendet, die in einem bestimmten Format
vorliegt. In dieser stehen alle Libraries und Library-Offsets drin, deren
Einträge im System überprüft werden sollen. Mit einem mitgelieferten
`AREXX'-Programm kann diese Datei einfach aus den `FD'-Files erzeugt werden.
Search - Die Suchfunktion von RSys
==================================
Mit dieser komfortablen Suchfunktion hat der Benutzer die Möglichkeit, in
der Liste des Hauptfensters nach einem String suchen zu lassen. Die Suchmethode
ist einfach implementiert worden, d.h. es wird die Liste von Anfang an (oder
vom letzten gefundenen Eintrag aus) durchsucht und dabei getestet, ob sich der
eingegebene String als Teilstring im Listeneintrag befindet.
War der Test erfolgreich, wird der gefundene Eintrag zum obersten Eintrag im
ListView gemacht. Der String ist hierbei "case-sensitiv" einzugeben, Groß- und
Kleinschreibung ist also zu berücksichtigen! Die Taste `ESC' beendet die
Eingabe und betrachtet die Eingabe als abgebrochen, ebenso wie das `Cancel'-
und das Closegadget.
Nach der Anwahl des entsprechenden Menüpunktes erscheint ein kleines
Fenster mit drei Gadgets:
Das String-Gadget
-----------------
- Gadget: String-Gadget
In diesem Gadget kann der Suchstring eingegeben werden. Groß- und
Kleinschreibung muß berücksichtigt werden. Die Länge des Strings ist
maximal 40 Zeichen lang. Nach dem Öffnen des Eingabefensters ist dieses
Gadget automatisch aktiv.
Das Search-Gadget
-----------------
- Gadget: Search-Gadget TASTE `S'
Ist die Eingabe abgeschlossen, wird nach dem Gadget-Klick der String
intern übernommen und eine Vorwärtssuche gestartet.
Das Cancel-Gadget
-----------------
- Gadget: Cancel-Gadget
Die Eingabe wird abgebrochen. Der eventuell eingegebene String wird
*NICHT* intern übernommen.
Der Help-Modus
**************
Ab Version 1.3 wird die Hilfe vollständig über das `AmigaGuide'-System
gesteuert. Die Hilfe kann mit dem Menüpunkt `Help' eingeschaltet werden. Ist
dieser Modus aktiviert, ist gleichzeitig der Menüpunkt `Reload AGuide context
nodes...' ausgeschaltet. Während des `Hilfe-Modus' ist auch kein `Iconify'
möglich, da das `AmigaGuide'-Fenster auf dem selben Screen eröffnet wird, wie
das Hauptfenster von `RSYS'.
Dieser Modus läuft asynchron, d.h. es kann nun ganz normal
weitergearbeitet werden. Bei jeder Aktion jedoch erscheint der entsprechende
Abschnitt in dem geladenen und von `AmigaGuide' angezeigtem Dokument-Guide zu
`RSYS'. Damit kann auf einfache Weise während jeder Aktion eine Hilfe
ermöglicht werden.
Eine Besonderheit ist noch das *Jumpen* auf andere PublicScreens. Ist die
Hilfe aktiviert, wird zunächst das `AmigaGuide'-System beendet und dann nach
der Öffnung des Hauptfensters erneut gestartet. Die Hilfe *jumpt also mit*!
Ein Nachteil soll nicht unerwähnt bleiben. Das Laden des Dokument-Files
dauert je nach Größe etwas länger, was sich besonders beim Springen zu
anderen PublicScreens bemerkbar macht. In späteren Version werde ich eine
extra Hilfe-Datei schreiben, und diese wird dann kleiner sein, womit sich dann
auch die Ladezeiten verkürzen.
Das Application Icon
********************
Wurde der Menüpunkt `Iconify' gewählt oder das Programm von der
WorkBench gestartet, erscheint auf dem WorkBench-Screen ein sogenanntes
AppIcon. Darauf können andere WorkBench-Objekte, wie Schubladen, Textdateien,
Devices etc., deren Icon sichtbar ist, gezogen werden.
Ab `RSYS' 1.2 gibt es die Möglichkeit, durch Angabe von `NOAPPICON' in den
ToolTypes kein Icon erscheinen zu lassen. Damit ist dann auch das nachfolgend
beschriebene `Actioning' nicht durchführbar.
Das Actioning
=============
Nach dem Aktivieren des Icons durch Anklicken oder Draufziehen eines
WorkBench-Objektes öffnet `RSYS' ein kleines Fenster mit drei Gadgets. Die
Titelzeile des Fensters zeigt den Namen des Objektes an, das auf das
`RSYS'-Icon gezogen wurde. Darunter wird der Typ des Objektes angezeigt. In
dem ListView-Gadget werden alle Aktionen, die dem Typ dieses Objektes in der
Actions-Datei zugeordnet wurden, aufgelistet. Das `Info'-Gadget gibt weitere
Informationen über das Objekt in Form eines Systemrequesters aus.
Nach der Anwahl eines ListView-Eintrages wird die entsprechende Aktion mit
diesem Objekt ausgeführt. Dabei wird der Name des Objekts an den
entsprechenden String in der Actions-Datei angehängt und als CLI-Befehl
ausgeführt.
Hierzu ein Beispiel: Für LHA-Archive existieren folgende Einträge:
39#LHArc archive#Archiv listen#OwnC:LZ l #W#
39#LHArc archive#Archiv testen#OwnC:LZ t #W#
In der Titelzeile erscheint der Eintrag `LHArc archive' und in dem ListView
die Einträge `Archiv listen' und `Archiv testen'. Wird der Eintrag `Archiv
listen' angeklickt, wird der Befehl `OwnC:LZ l <objektname>' ausgeführt.
Die Hotkey-Aktivierung
======================
In dem Icon-Zustand von `RSYS' kann das Hauptfenster mit dem Hotkey
`lshift rshift y' wieder geöffnet werden. Desweiteren kann `RSYS' auch mit
dem Programm `Exchange' angesteuert und auch beendet werden.
Alle Hotkeys werden voreingestellt mit den beiden Shift-Tasten
zusammen definiert. Hier eine Zusammenfassung aller Hotkey-Voreinstellungen,
wie sie auch den ToolTypes des `RSYS'-Icons entnommen werden können, versehen
mit ein paar Erklärungen:
- ToolType: OUTWINDOW DEFAULT: CON:/10//150/RSYS WINDOW/AUTO/CLOSE
Manche Aktionen von `RSYS' erfordern einen Ein-/Ausgabe-Kanal. Diese
Ein- und Ausgaben werden dann auf das angegebene CLI-Window umgeleitet.
Anm.: Dieser Eintrag ist *ZWINGEND*!!! NIL: oder das NULL:-Device
sollten *NICHT* verwendet werden, wenn man einen Guru vermeiden will!
- ToolType: CX_HOTKEY DEFAULT: `LSHIFT RSHIFT Y'
Mit diesem Hotkey kann `RSYS' aktiviert werden, wenn das AppIcon
existiert. Falls das Hauptfenster offen ist, guckt `RSYS' nach, ob der
vorderste Screen ein PublicScreen ist und öffnet das Hauptfenster auf
diesem.
- ToolType: CX_CRYPT DEFAULT: `LSHIFT RSHIFT K'
Damit wird das Verschlüsselungs-Tool von `RSYS' aufgerufen (Menüpunkt
Crypt).
- ToolType: CX_FINDFILE DEFAULT: `LSHIFT RSHIFT S'
Damit wird das Dateisuchfenster von `RSYS' aufgerufen (Menüpunkt
Find File).
- ToolType: CX_FORMAT DEFAULT: `LSHIFT RSHIFT F'
Damit wird das `Format-Disk'-Fenster von `RSYS' aufgerufen
(Menüpunkt Format).
Das Action-Window
=================
Erscheint auf der WorkBench das AppIcon, so können in bekannter Manier eine
oder mehrere WorkBench-Icons (also Directories, Dateien, Disc-Icons, etc.) auf
dieses Icon gezogen werden. Daraufhin erscheint ein kleines Window mit
mehreren Gadgets, das Action Window.
Der Text Formatierer
********************
Ab `RSYS' 1.2 ist es möglich, beim Abspeichern einer Liste die Ausgabe
noch etwas zu formatieren. Diese Möglichkeit kann mit dem Menüpunkt `Text
Formatter' abgeschaltet werden.
Eine Anwendung wäre zum Beispiel, wenn Ihr nach Dateien suchen laßt,
die Ihr dann löschen wollt. Ihr öffnet das `Find File'-Fenster und tragt
das entsprechende Pattern ein, z.B. `#?.bak'. Die ausgewählten Devices
werden dann nach solchen Dateien durchsucht. Habt Ihr alle zusammen,
speichert Ihr die Datei ab. Nach dem Filerequester erscheint der
`Text-Formatter'. Dort schreibt Ihr als Prefix `Delete' hinein. Dann
schaltet Ihr noch alle Schalter ein und klickt dann auf `Use format'. Die
Einträge werden dann in dem Format
Delete "datei.bak"
abgespeichert. Diese Datei könnt Ihr dann mit `Execute' ausführen und
alle gefundenen Dateien werden gelöscht.
Möchtet Ihr eine Liste abspeichern, erscheint nach jedem Filerequester ein
Fenster mit acht Gadgets. Diese acht Gadgets im einzelnen.
Das Prefix-Gadget
=================
- String-Gadget: Prefix
Hier wird eingetragen, was *vor* dem zu speichernden Listeneintrag stehen
soll.
Das Text to save-Gadget
=======================
- Text-Gadget: Text to save
In diesem Gadget wird die Formatierung des zu speichernden
Listeneintrags angezeigt. Diese kann sich ändern, wenn die Gadgets `Blank
between texts' und `Quote-in text' gesetzt sind.
Das Postfix-Gadget
==================
- String-Gadget: Postfix
Hier steht der Text, der *nach* dem Listeneintrag kommen soll.
Das Blanks beween texts-Click-Gadget
====================================
- Click-Gadget: Blanks beween texts
Ist dieser Schalter angeklickt, wird zwischen dem Prefix und dem
Listeneintrag sowie zwischen dem Listeneintrag und dem Postfix ein
Leerzeichen (`Blank') eingefügt.
Das Quote-in text-Click-Gadget
==============================
- Gadget: Quote-in text
Ist dieser Schalter angeklickt, wird der Listeneintrag in
Anführungszeichen gesetzt.
Das No header in file-Click-Gadget
==================================
- Gadget: No header in file
Bei formatierten Ausgaben ist es manchmal nicht wünschenswert, daß eine
Titelzeile in die Datei geschrieben wird. Das kann mit diesem Gadget
abgeschaltet werden.
Das Use Format-Gadget
=====================
- Gadget: Use Format
Das eingestellte Format wird verwendet und die Liste in diesem Format
abgespeichert.
Das No Format-Gadget
====================
- Gadget: No Format
Die eingestellte Formatierung wird nicht berücksichtigt und die Liste ganz
standardmäßig abgespeichert.
Die Font-Anzeige
****************
Die Anzeige eines gewählten Fonts wurde erheblich verbessert. Ab Version
1.3 wird nicht mehr der ASL-FontRequester verwendet, sondern ein eigenes
Fenster verwendet. Dieses besteht aus einem großen Anzeige-Bereich und
insgesamt vier Gadgets, mit denen die Attribute des Fonts eingestellt werden
können.
Diese Attribute können auch kombiniert verwendet werden. Jeder Einstellung
der Attribut-Gadgets beeinflußt die Stellung des `Normal'-Gadgets. Mit einem
Klick auf das `Normal'-Gadget werden alle anderen Attribute zurückgesetzt. Die
Bedienung ist also vöölig analog zu dem ASL-FontRequester.
Das Text-Feld
=============
- Area: Das Text-Feld
In diesem Feld wird ein Beispieltext in dem zu zeigenden Font angezeigt.
Der Beispieltext setzt sich aus der Fontgröße und dem Namen des Fonts
zusammen, z.B.
(8) topaz.font
Die Fonts können jede beliebige Größe einnehmen. Ist der Font größer
als das Text-Feld, wird ein entsprechender Bereich *geclipt* dargestellt.
Das bedeutet, daß der Text ab links oben dargestellt wird und der maximal
sichtbare Bereich gezeigt wird.
Diese Technik wird übrigens ganz einfach mit sogenannten *Clip-Regions*
realisiert. Eine Vorgehensweise, die ich erst vor kurzem kennen gelernt
habe. Ein Blick in den Quellcode ist sehr instruktiv!
Das Normal-Click-Gadget
=======================
- Click-Gadget: Normal
Alle Attribute werden zurückgesetzt und der Font in der normalen
Einstellung angezeigt.
Das Italic-Click-Gadget
=======================
- Click-Gadget: Italic
Der Font wird zusätzlich in kursiver Darstellung gezeigt.
Das Bold-Click-Gadget
=====================
- Click-Gadget: Bold
Der Font wird zusätzlich in fetter Darstellung gezeigt.
Das Underl-Click-Gadget
=======================
- Click-Gadget: Underl
Der Font wird zusätzlich in unterstrichener Darstellung gezeigt.
Der Speicher-Monitor
********************
Ab Version 1.3 gibt es die Möglichkeit, den Speicher ab einer gewählten
Adresse anzusehen, den `Monitor'. Dieser erscheint immer dann, wenn ein Objekt
mit einer Adresse geklickt wurde und dieses nicht modifiziert werden kann. In
Version 1.2 wurde an dieser Stelle nur kurz `gebeept'.
Ich habe eine Speicherliste eingebaut, deren Aufbau ich der Dokumentation
zum Programm `Enforcer' entnommen habe. Bevor der Monitor erscheint, wird eine
Adreßüberprüfung vorgenommen, ob die gewünschte Adresse überhaupt
zulässig ist. Ist sie es nicht, erscheint ein Systemrequester mit allen
erkennbaren Attributen des anvisierten Speicherbereichs. Das Auslesen eines
unzulässigen Speicherbereiches kann zu einem `Enforcer'-Hit führen, wenn
dieser ausgelesen wird.
Das Monitorfenster besteht aus einem Anzeige-ListView und mehreren Gadgets.
Das Entry-Gadget
================
- Text-Gadget: Entry
In diesem Gadget erscheint zur Information noch einmal die Zeile im
Haupt-Listview von `RSYS'. Dahinter in `[]' der Typ des Speichers, wie er
aus der implementierten `Enforcer'-Liste der Speicherbereiche ausgelesen
wurde.
Das Start-Gadget
================
- Text-Gadget: Start
Hier steht die Startadresse, ab der der Speicher angezeigt wird.
Das Current-Gadget
==================
- Gadget: Current
Hier steht die aktuelle Adresse, ab der der Speicher angezeigt wird. Der
Speicher wird in 512-Byte-Blöcken angezeigt.
Das Display-Gadget
==================
- Cycle-Gadget: Hex/ASCII-Hex-ASCII
Hiermit kann die Art der Anzeige ausgewählt werden.
Das Speicher-ListView und der Header
====================================
- Gadget: Speicher-ListView/Header
Hier steht formatiert der aktuell formatierte Speicherinhalt. Der Speicher
wird in 512-Byte-Blöcken angezeigt.
Die Speicherbereichs-Gadgets
============================
- Gadget: <<< Prev 512 Byte
- Gadget: To start address
- Gadget: >>> Next 512 Byte
Mit diesen Gadgets kann der Speicherbereich aktualisiert werden. Das erste
Gadget zeigt den vorhergehenden, das dritte den nachfolgenden und das
zweite den Startbereich des Speichers an.
Die Save-Gadgets
================
- Gadget: Save C-Code
- Gadget: Save ASCII
- Gadget: Save Hex
- Gadget: Save as is
Mit diesen Gadgets kann der angezeigte Speicherbereich auf verschiedene
Arten in eine Datei gespeichert werden. Hier ein paar Beispiele:
*Als C-Code:*
/*
RSys-C-Code Generator
Memory at 0x00203672
*/
ULONG RSysData[] = {
0x00000000, 0x00000000, 0x000000F8, 0xF7C80020,
0x362400F8, 0xF7740000, 0x00000000, 0x00000000,
0x00F8F7C8, 0x00203624, 0x00F8F78A, 0x00000000,
0x00000000, 0x000000F8, 0xF7C80020, 0x362400F8,
0xF7A0002E, 0x4FBC4EF9, 0x00FC775C, 0x4EF900FC,
0x77340020, 0x63880020, 0x36240800, 0x00FC76D6,
0x0600000C, 0x00320025, 0x00010000, 0x00000000,
0x00000000, 0x0033CE18, 0x0033CE18, 0x00000000,
0x00000000, 0x00000000, 0x4EF900FA, 0x3FE24EF9,
0x00FA3DCE, 0x4EF900FA, 0x15DA4EF9, 0x00FA4036,
0x4EF9002E, 0x8E0C4EF9, 0x00FA15A8, 0x4EF900FA,
0x14604EF9, 0x00FA1258, 0x4EF900FA, 0x14B24EF9,
0x00FA12AA, 0x4EF900FA, 0x3D384EF9, 0x002E8DD4,
0x4EF9002E, 0x8DEA4EF9, 0x00FB3BAC, 0x4EF900FB,
0x3BC24EF9, 0x002E8E1C, 0x4EF9002E, 0x8E344EF9,
0x00FA124A, 0x4EF9002E, 0x8DF44EF9, 0x00FA122C,
0x4EF900FA, 0x6B8C4EF9, 0x00FA429E, 0x4EF900FA,
0x41624EF9, 0x00FA53A0, 0x4EF900FA, 0x4F784EF9,
0x00FA6B98, 0x4EF900FA, 0x6B804EF9, 0x00FA6B74,
0x4EF900FA, 0x114C4EF9, 0x00FA1848, 0x4EF900FA,
0x18484EF9, 0x00FA0E70, 0x4EF900FA, 0x10884EF9,
0x00FA2D7C, 0x4EF900FA, 0x2D0E4EF9, 0x00FA2C90,
0x4EF900FA, 0x0E584EF9, 0x00FA32CA, 0x4EF900FA,
0x68F84EF9, 0x00FA0BD0, 0x4EF900FA, 0x0BB84EF9,
0x00FA0B7C, 0x4EF900FA, 0x0ADE4EF9, 0x00FA0ABC,
0x4EF900FA, 0x306E4EF9, 0x00FA0E40, 0x4EF900FA,
0x096C4EF9, 0x00FA095C, 0x4EF900FA, 0x2E0A4EF9,
0x00FA2E26, 0x4EF900FA, 0x2CDC4EF9, 0x00FA2D5A,
0x4EF900FA, 0x2BC04EF9, 0x00FA2AC2, 0x4EF900FA,
0x07FC4EF9, 0x00FA07DC, 0x4EF900FA, 0x3C1E4EF9,
0x00FA3BF4, 0x4EF900FA, 0x3C884EF9, 0x00FA03D0,
0x4EF900FA, 0x0A084EF9, 0x00FA097C, 0x4EF900FA,
};
/* End of Code */
*Als Hex:*
----------------------------------------------
Memory at 0x00203672
----------------------------------------------
000: 00 00 00 00 00 00 00 00 00 00 00 F8 F7 C8 00 20
010: 36 24 00 F8 F7 74 00 00 00 00 00 00 00 00 00 00
020: 00 F8 F7 C8 00 20 36 24 00 F8 F7 8A 00 00 00 00
030: 00 00 00 00 00 00 00 F8 F7 C8 00 20 36 24 00 F8
040: F7 A0 00 2E 4F BC 4E F9 00 FC 77 5C 4E F9 00 FC
050: 77 34 00 20 63 88 00 20 36 24 08 00 00 FC 76 D6
060: 06 00 00 0C 00 32 00 25 00 01 00 00 00 00 00 00
070: 00 00 00 00 00 33 CE 18 00 33 CE 18 00 00 00 00
080: 00 00 00 00 00 00 00 00 4E F9 00 FA 3F E2 4E F9
090: 00 FA 3D CE 4E F9 00 FA 15 DA 4E F9 00 FA 40 36
0A0: 4E F9 00 2E 8E 0C 4E F9 00 FA 15 A8 4E F9 00 FA
0B0: 14 60 4E F9 00 FA 12 58 4E F9 00 FA 14 B2 4E F9
0C0: 00 FA 12 AA 4E F9 00 FA 3D 38 4E F9 00 2E 8D D4
0D0: 4E F9 00 2E 8D EA 4E F9 00 FB 3B AC 4E F9 00 FB
0E0: 3B C2 4E F9 00 2E 8E 1C 4E F9 00 2E 8E 34 4E F9
0F0: 00 FA 12 4A 4E F9 00 2E 8D F4 4E F9 00 FA 12 2C
100: 4E F9 00 FA 6B 8C 4E F9 00 FA 42 9E 4E F9 00 FA
110: 41 62 4E F9 00 FA 53 A0 4E F9 00 FA 4F 78 4E F9
120: 00 FA 6B 98 4E F9 00 FA 6B 80 4E F9 00 FA 6B 74
130: 4E F9 00 FA 11 4C 4E F9 00 FA 18 48 4E F9 00 FA
140: 18 48 4E F9 00 FA 0E 70 4E F9 00 FA 10 88 4E F9
150: 00 FA 2D 7C 4E F9 00 FA 2D 0E 4E F9 00 FA 2C 90
160: 4E F9 00 FA 0E 58 4E F9 00 FA 32 CA 4E F9 00 FA
170: 68 F8 4E F9 00 FA 0B D0 4E F9 00 FA 0B B8 4E F9
180: 00 FA 0B 7C 4E F9 00 FA 0A DE 4E F9 00 FA 0A BC
190: 4E F9 00 FA 30 6E 4E F9 00 FA 0E 40 4E F9 00 FA
1A0: 09 6C 4E F9 00 FA 09 5C 4E F9 00 FA 2E 0A 4E F9
1B0: 00 FA 2E 26 4E F9 00 FA 2C DC 4E F9 00 FA 2D 5A
1C0: 4E F9 00 FA 2B C0 4E F9 00 FA 2A C2 4E F9 00 FA
1D0: 07 FC 4E F9 00 FA 07 DC 4E F9 00 FA 3C 1E 4E F9
1E0: 00 FA 3B F4 4E F9 00 FA 3C 88 4E F9 00 FA 03 D0
1F0: 4E F9 00 FA 0A 08 4E F9 00 FA 09 7C 4E F9 00 FA
Der C-Code kann unmittelbar in C-Programmen eingebunden werden.
Hintergrundinfos
****************
Zusammenarbeit mit anderen Programmen
=====================================
`RSYS' wurde unter Berücksichtigung aller mir bekannten Richtlinien der
Programmierung unter AmigaOS 2.0 geschrieben. Alle kritischen Routinen wurden
bis zu dreimal abgesichert. Das bläht zwar etwas den Code, gewährleistet
aber die Lauffähigkeit auch unter Betriebssystemen >= 2.04.
Besonderer Wert wurde auf die Vermeidung von Speicherfehlern und
`Enforcer'-Hits gelegt. Bei einem auftretenden Speicherfehler wird in den
meisten Fällen das Programm unter Angabe von Quelldatei- und Funktionsname,
sowie der Zeilennummer im Quelltext abgebrochen und beendet.
`RSYS' ist darauf ausgelegt, mit allen Programmen so gut wie möglich
zusammenzuarbeiten. Das schließt jedoch die Programme aus, die von Haus aus
Hacks sind, die sich nicht an die Programmierrichtlinien unter AmigaOS halten.
Weiterhin hat `RSYS' keinerlei Problem mit systemkonformen Patches, wie z.B.
`MagicMenu' von Martin Korndörfer, oder `MFR' von Stefan Stuntz.
Viele Leute haben mich per EMAIL angeschrieben, daß ich doch bitte OS
3.0-Features verwenden soll. `RSYS' soll eigentlich unter allen Systemen >2.0
laufen, weswegen ich spezielle Features von 3.0 absichtlich vermieden habe.
Ausnahmen bilden jedoch einige verwendete Tags, wie z.B. die
`GTM_NewLookMenus', das die Standard-3.0-Menüfarben einstellt. Diese werden
von OS 2.x-System ignoriert, womit also dem Einbau nichts im Wege stand.
Ein weiteres Feature von OS 3.0 ist die Routine `GT_GetGadgetAttrsA' der
`gadtools.library'. Damit wird eine vollständige Steuerung der
ListView-Gadgets über Pfeiltasten ermöglicht. Diese ist jedoch unter 2.x
noch nicht implementiert, sodaß auch dieses Feature in `RSYS' aus Gründen der
Kompatibilität nichts zu suchen hat.
Systemlisten und Schutzprotokolle
=================================
Intuition-Objekte werden beim Auslesen der Daten mit dem Protokoll
"LockIBase() / UnlockIBase()" geschützt. Damit werden die jeweiligen Listen
vor der Veränderung durch Intuition-Routinen während des Auslesens
ausreichend geschützt. Bei der Veränderung der Objekte durch `RSYS' ist
selten ein Schutzprotokoll erforderlich, da die Routinen von Intuition dieses
meistens selbst erledigen.
Alle Exec-Objekte, wie Tasks, Ports, Libraries, etc., werden während des
Auslesens durch ein "Forbid()/Permit()", im Falle von Tasks, sogar durch ein
"Disable()/Enable()" vor Veränderung durch Systemroutinen geschützt. Im
Falle der Tasks ist zum Auslesen der Taskzeiger das Protokoll
"Disable()/Enable()" zu verwenden, zum Auslesen der Taskstruktur reicht
jedoch ein "Forbid()/Permit()".
"Disable()/Enable()" sollte deswegen verwendet werden, da die Systemliste in
der ExecBase durch den interruptgesteuerten Task-Scheduler laufend in ihrer
Anordnung geändert wird (man denke nur an die Aktivierung eines Tasks,
also die Umsetzung des entsprechenden Taskknotenzeigers aus der Wait-Liste
in die Ready-Liste und dann in den Running-Zustand
[ExecBase->ThisTask-Eintrag]).
Die Task-Struktur selber kann jedoch nur von einem Task oder Prozeß aus
verändert werden. Daher reicht zum Auslesen der Taskstruktur das
Protokoll "Forbid()/Permit()" aus. Daraus ergibt sich also folgendes
Schema:
Reservieren der eigenen Struktur-Speicherbereiche
"Forbid()";
"Disable()";
Auslesen und Merken der Tasknodes
"Enable()";
Auslesen der Taskstrukturen in eigene Strukturen (*ohne*
Verwendung von DOS-Routinen, also KEIN FGets(), Open() etc.)
"Permit()";
Auswerten der eigenen Strukturen
Freigeben der eigenen Struktur-Speicherbereiche
Für die Implementation dieser Routinen könnt Ihr den dokumentierten
Quelltext einsehen.
Unter diesen Vorsichtsmaßnahmen sollte es keine Probleme im Zusammenspiel
mit anderen Programmen geben, bis auf eine Einschränkung: `RSYS' kann nicht
mit Programmen zusammenarbeiten, die nicht systemkonform programmiert wurden.
Beispiele dafür sind Programme, die beispielsweise den Namen eines
öffentlichen Ports nicht korrekt initialisieren. So kommt es beispielsweise
vor, daß ein Programm zwar einen Zeiger auf einen Portnamen ungleich Null hat,
diesen Zeiger aber uninitialisiert läßt und dieser dann folglich irgendwohin
zeigt. Die Folge ist im harmlosesten Fall ein `Enforcer'-Hit des Typs
`READ-BYTE' (beim Auslesen des vermeintlichen Strings), im extremsten Fall ein
Guru!
Ich habe das Problem jetzt so gelöst, daß ich bei den auszulesenen
Node-Namen das Typen-Flag untersuche. Steht dort der Eintrag `NT_UNKNOWN' oder
nicht das erwartete Flag, lese ich den String einfach nicht aus, sondern trage
in das ListView
<wrong type:0>
ein. Hierbei steht die `0' für den ermittelten Knotentypen. Die möglichen
Knotentypen sind:
Wert Typ
------------------------------------------------------
0 Unbekannter Node-Typ
1 Task
2 Interrupt
3 Device
4 Message Port
5 Message
6 `freie' Message
7 Message wurde beantwortet
8 Resource
9 Library
10 Memory-Node
11 Softinterrupt
12 Font
13 Prozeß
14 Semaphor
15 Signalsemaphor
16 Boo-Node
17 Kick-Memory-Node
18 Graphics-Node (Monitor-Node z.B.)
19 Death Message (eine `tote' Nachricht)
254 Benutzerdefinierter Node
255 Erweiterung (auch benutzerdefiniert)
Manche Systemutilities (z.B. ARTM) achten darauf nicht und produzieren
`Enforcer'-Hits en mas. Diese Fehler lassen sich auch nicht vermeiden. Der
Aufwand dafür wäre einfach zu groß, da man ja praktisch Teile des
Programms `Enforcer' in das eigene Programm implementieren müßte. Solange
man nicht davon ausgehen kann, daß *JEDER* Programmierer systemkonform
programmiert, wird es diese Lücke auch weiterhin geben.
Ein weiterer typischer Fehler ist die Verwendung der Compiler-Funktion
"strcpy()" auf Quellstrings vorher unbekannter Länge. Viele Programmierer
verwenden diese Routine, um schneller Strings zu kopieren. Dabei wird nicht
beachtet, daß man eventuell gar nicht soviel Speicherplatz reserviert hat, um
den Quellstring aufzunehmen. Ein signifikantes Beispiel dafür ist das o.g.
Port-Namen-Problem. Ist der String uninitialisiert und nicht mit `ASCII 0'
terminiert, kopiert "strcpy()" einen solchen Portnamen bis in alle Ewigkeit,
bis zum Ende des Speichers, bis zur nächsten Einsprungadresse eines anderen
Tasks oder bis zur nächsten Reise von Indian tours `:-)' Manche Programmierer
sagen sich dann, überprüfen wir doch einfach mit "strlen()" den Quellstring.
Nun, da "strlen()" auch solange zählt, bis `ASCII 0' erkannt wurde, ist diese
Methode auch für eine Auslandsreise nach Indien durchaus geeignet.
Das einfachste und probateste Mittel in diesem Fall, ist die
Compiler-Funktion "strncpy()". Damit kann man einfach festlegen, wieviel
Zeichen denn nun kopiert werden sollen. Das einzige, was jetzt noch stört,
ist der `READ-BYTE'-Hit den man bekommt, wenn man *merkwürdige* Adressen an
"strncpy()" übergibt.
Ein weitere Fehlerquelle ist die Verwendung von "printf()" in allen
seinen Erscheinungsformen ("sprintf()", "vsprintf()" etc.) im Zusammenhang mit
Systemlisten. Da die "printf()"-Routinen auch auf DOS-Routinen zugreifen,
sind sie zum zügigen Kopieren von mehreren Systemeinträgen ungeeignet.
Die Routine "RawDoFmt()" der Exec-Library ist jedoch *sicher*. Mit ihr kann man
sich selbst ein "sprintf()" zusammenbauen, was ich auch getan habe.
Normalerweise befindet sich aber diese Routine in der `amiga.lib'.
Sicher ist weiterhin die Verwendung der "str...()"-Routinen zwischen
Schutzprotokollen, da diese nur Speicherbereiche kopieren oder
verschieben. Möchte man es trotzdem noch schneller haben, gibt es noch
die Funktionen "CopyMem()" und "CopyMemQuick("). Bei letzterer ist zu
beachten, daß die Daten auf longwords ausgerichtet sein müssen.
Beide Routinen gehören zur `exec.library', können also bei
Systemlistenuntersuchungen verwendet werden.
Tips und Tricks
***************
Diese Sparte ist zunächst leer. Sollten sich Anfragen und Tips aus dem
hoffentlich großen Kreis von `RSYS'-Benutzern, wird sich dieser Bereich
füllen.
Stop! Ein paar Tips habe ich schon :-)
Batch zum Debuggen von Programmen
=================================
Der folgende Batch (Name `tracer') war mir beim Testen des Programmes sehr
hilfreich:
.KEY onoff,program/A
.bra {
.KET }
if { program } eq ""
echo "Aufruf: tracer [ON | OFF] [program]"
quit
endif
if { onoff } eq ON
assign t: doks:t
cpu nofastrom
run >NIL: <NIL: MungWall TASK {program}
run >NIL: <NIL: IO_Torture
run >NIL: <NIL: enforcer ON
run sushi <>"CON:0/190//80/Sushi CTRL-E:Empty CTRL-F:File/AUTO/CLOSE"
ON BUFK=1024
else
if { onoff } eq OFF
Utilities:ProgUtils/Sushi/sushi OFF
run >NIL: <NIL: enforcer OFF
tbreak IO_Torture
tbreak MungWall
cpu fastrom
assign t: ram:t
else
echo "Aufruf: tracer [ON | OFF] <[program]>"
endif
endif
Das Programm tbreak
===================
Das Programm `tbreak' sendet einen Break-Signal an den Task, dessen Name
als Parameter beim Aufruf mit angegeben wurde. Es ist ein kleines
Programm, daß ich mal quick and dirty gehackt habe. Hier kommt der kleine
Quelltext dazu:
#include <exec/types.h>
#include <exec/execbase.h>
#include <dos/dos.h>
#include <dos/dosextens.h>
#include <clib/dos_protos.h>
#include <clib/exec_protos.h>
#include <stdio.h>
#include <string.h>
#define STRINGEND '\0'
char *
B2CStr(char *ret, BSTR inp)
{
register int i;
char *help = (char *)BADDR(inp);
for (i = 0; i < *help; i++)
*(ret + i) = *(help + i + 1);
*(ret + i) = STRINGEND;
return (ret);
}
int
main(int argc,char **argv)
{
struct DOSBase *DOSBase = NULL;
extern struct ExecBase *SysBase;
int ret = RETURN_FAIL;
if(DOSBase = (struct DOSBase *)OpenLibrary((STRPTR)"dos.library", 33L))
{
struct Node *node,*membernode[200];
struct CommandLineInterface *CLI;
char modname[200];
int i,j,out;
if(argc != 2)
Printf((STRPTR)"Aufruf: %s <taskname>\n",argv[0]);
else
{
Forbid();
Disable();
for (node = SysBase->TaskWait.lh_Head;
node->ln_Succ&& i < 200; node = node->ln_Succ)
membernode[i++] = node;
for (node = SysBase->TaskReady.lh_Head;
node->ln_Succ && i < 200; node = node->ln_Succ)
membernode[i++] = node;
if (i < 200)
membernode[i++] = &SysBase->ThisTask->tc_Node;
Enable();
out = FALSE;
for (j = 0; j < i && !out && i < 200; j++)
{
struct Process *proc = (struct Process *)membernode[j];
if(CLI = (struct CommandLineInterface *)BADDR(proc->pr_CLI))
{
B2CStr(modname,CLI->cli_CommandName);
if (!strcmp(argv[1],modname))
{
Signal((struct Task *)proc,
SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_D |
SIGBREAKF_CTRL_E | SIGBREAKF_CTRL_F);
out = TRUE;
}
}
}
Permit();
if(out == TRUE)
Printf((STRPTR)"Task with command \'%s\' signaled...\n",argv[1]);
if(i >= 200)
PutStr((UBYTE *)"More than 200 tasks read!\n");
ret = RETURN_OK;
}
CloseLibrary((struct Library *)DOSBase);
}
return(ret);
}
Danksagungen
************
* Klaus Spark (Klaspa)
Mein erster und kritischster Betatester. Ohne ihn sähe `RSYS' ganz
anders aus! Danke Klaus!
* Klaus Nolte (Viking)
Der zweite Betatester. Seine Langzeitversuche sind die besten! Danke
Klaus!
* Lars Monecke (Mave)
Er betatestete und steuerte die Icons zu `RSYS' bei, die ich ein klein
wenig modifizierte. Danke Mave!
* Michael (Pokey, Sysop der CASABLANCA)
Seinen kritischen Anmerkungen verdankt das Installer-Script sein heutiges
Aussehen. Danke Michael!
* Olaf 'Olsen' Barthel
Seine Quelltexte zu `term' und anderen sind ein wahre Fundgrube für jeden
Programmierer!
* Thomas Breit, Sysop der Box ACBW in Wolfsburg
Er betatestete und fand einige Fehler.
* Florian Faber
Er betatestete und trieb mich mit seinem 4000er fast an den Rand der
Aufgabe. Danke Florian!
* Franz-Josef Reichert (FJR)
Ihm verdanke ich einige Hinweise zur Systemprogrammierung. Danke, FJ!
* Michael Sinz
Sein Enforcer ist der Beste. Viele Fehlerbeseitigungen gehen auf sein
Konto `:-)'
* Jan van den Baard
Seine GadToolsBox erlaubte das Design von `RSYS'. Danke Jan!
* Carolyn Scheppner
Dein Sushi zeigte mir ohne viel Papierverschwendung, was über die
Serielle an Hits kamen `:-)'
* Thomas Carstens
Sein Programm ShowGuru sagte mir, was ich schon wieder falsch gemacht
habe `:-)'
Viele, viele andere Leute im Z-Netz und sonstwo,
von denen ich gelernt habe, zu programmieren.
Verwendete Software
*******************
Dieses Programm entstand mit Hilfe folgender Programme :
Aztec C68k/Amiga 5.2a Sep 25 1991 17:04:29
Copyright 1991 by Manx Software Systems, Inc.
GadToolsBox 37.176 (01.9.92)
(c) Copyright 1991,92 Jaba Development
CEdPro2 Version 2.11
(c) Copyright by CygnusSoft Software
mungwall 36.45 (9.5.91)
Copyright (c) 1990, 1991 Commodore-Amiga, Inc.
Enforcer 37.25
Copyright (c) 1992 Michael Sinz
io_torture 37.6 (16.1.91)
texinfo 2.109
Copyright (C) 1985, 86, 88, 90, 91, 92, 1993
Free Software Foundation, Inc.
MakeInfo 1.55
Copyright (C) 1993 Reinhard Spisser and Sebastiano Vigna
Under GNU License
DVI-Print - Version 1.07L for AMIGA (c) 1990/91
(c)Copyright 1990-91, (hes/rbs) , All rights reserved. Feb 9 1991
ShowDVI - Version 1.17L for AMIGA (c) 1990/91
(c)Copyright 1990-91, (hes). All rights reserved. Sep 28 1991
Da das Programm Funktionen der Kickstart 2.0 verwendet, läuft es
folglich nur auf Amigas mit Kickstart >= 2.0.
History
*******
============
Version 1.01 (unveröffentlicht)
============
10-Apr-93
---------
- BACKPATTERNCOL = 0, dann wurde das Fenster nach einem ZipWindow nicht
korrekt aufgebaut. Bug fixed.
- Iconname (Programmname) global gemacht mit Notify auf die Icon-Datei.
18-Apr-93
---------
- CenterWindow() erheblich vereinfacht
- Aus "Available fonts" wurde "Fonts in FONTS:", da die ROM-Fonts
schon mit dem Button "Fonts" angezeigt werden können.
- Aus "Quit Sys" wurde "Quit RSys"
22-Apr-93
---------
- Library offsets eingeführt, checkt die gepatchten Libraries und Devices
============
Version 1.02 (unveröffentlicht)
============
01-May-93
---------
- Das sprintf() bricht kein Forbid()! Daher schreibe ich alle
Funktionen um.
02-May-93
---------
- Die ASL-Routinen wurden gekürzt
- Das Einsortieren der Listeneinträge verursachte unter bestimmten
Umständen Enforcer-Hits. Diese wurden beseitigt.
- Die Anzeige des DOS-Typs bei Volumes sah etwas wild aus. Beseitigt.
- Die Fontanpassung wurde etwas verbessert. Bei kleinen System-Screen-Font
wurde bei einigen Anzeigen im ListView das letzte Zeichen verschluckt.
06-May-93
---------
- Abspeichern ins Clipboard ist jetzt möglich. Eine ganze Liste kann im
Clipboard abgelegt werden
07-May-93
---------
- Ein neuer Menüpunkt ist dazugekommen: Flushing. Mit ihm können entweder
alle unbenutzten Libraries oder Fonts aus dem System entfernt werden
08-May-93
---------
- Die Source wurde ausführlicher dokumentiert. Jede Quelldatei hat nun
ihren Header.
- Die Port-Liste wurde nicht sortiert. Bug fixed.
- Der eingebaute Font ibm.font wurde entfernt und durch ein
OpenDiskFont()-Call ersetzt. Wird der ibm.font nicht gefunden, wird
Standard-Topaz für die Baumstruktur verwendet.
- Das ListView wird Read Only, wenn ein Hunk-Listing erstellt wird.
10-May-93
---------
- Es gibt ein neues Menü "ClipBoard". Es kann dort die ganze Liste, oder
ein Eintrag aus dieser Liste ins ClipBoard kopiert werden.
- Ein Enforcer-Hit wurde beseitigt. Die Routine GetNode() funktioniert
nun korrekt.
13-May-93
---------
- Einige Requester wurden geändert
- Der Menüpunkt "Check Libraries" wurde ins Menü "Special Actions"
verlagert.
16-May-93
---------
- Das globale Steuerfeld bekommt ein Bit mehr. Darin wird verzeichnet, ob
eine Zählstatistik im unteren Textgadget angezeigt werden soll.
20-May-93
---------
- Bug im Menüpunkt "Speak" beseitigt. Nach einem "Topaz font" wurde
dieser Menüpunkt nicht korrekt gesetzt.
- Es gibt jetzt einen Modus, in dem alle Ja/Nein-Abfragen von RSys
default gesetzt werden. Damit wird die Bedienung etwas schneller, falls
es gewünscht wird. Deshalb gibts dann auch das neue Tooltype
NOSAVEASKING.
- Der Quelltext wurde etwas überarbeitet.
- Die Menüs wurden überarbeitet.
20-May-93
---------
- Der Menüpunkt "Volume locks" ist dazugekommen.
- Bug in der Memory-Anzeige gekillt.
- Schweren Bug in der Jump()-Routine beseitigt!
07-Jun-93
---------
- Jedes Fenster hat jetzt ein Pattern-Muster, wie das Hauptfenster.
- Die "Check Libraries-Routine funktionierte nicht mit 4000er-ROMS. Jetzt
wird der korrekte Offset des KickROMs berechnet.
12-Jun-93
---------
- Das APP-Icon kann jetzt abgestellt werden.
- Das Centering funktionierte mal wieder nicht. Behoben.
- Das Patternmuster der Fenster kann jetzt zweifarbig dargestellt werden.
21-Jun-93
---------
- Es ist ein Textformatter für die Ausgaben auf Datei hinzugekommen.
- Die Sourcedateien wurden überarbeitet und weiter aufgeteilt
- Der MakeFile sieht etwas anders aus
- Das Installations-Script wurde vollständig neu geschrieben
24-Jun-93
---------
- Riesenbug in der "Memory"-Anzeige beseitigt. Führte auf dem 2000er zu
keinerlei Abstürzen, aber unter OS3 zu Chaos!
- Das Fehlerbehandlungssystem wurde total überarbeitet. Und schon wieder
1.5 KB kürzer :-).
- Alle Libraries werden mit der Versionsnummer 36 geöffnet. Damit werden
"falsche" Library-Aufrufe vermieden.
25-Jun-93
---------
- Die Speicherverwaltung wurd etwas optimiert
- Ich habe endlich einen einigermaßen sicheren Weg gefunden,
uninitialisierte Pointer auf Node-Namen korrekt abzufangen.
Glücklicherweise trägt das System (manchmal) ein NT_UNKNOWN als Type
des Nodes ein. Geschieht das, ist dieser Node sowieso Müll.
- Die Labels der Gadgets sind bei einer unglücklichen Wahl des
Patternmusters und der Farben etwas "zerlegt". Bug fixed.
- Die Funktion, die den Namen eines Nodes in einen String kopiert, wurde
jetzt vom Node-Typen abhängig gestaltet. Damit hoffe ich einige
Enforcerhits, die sich bei unsauber eingerichteten Knotennamen ergaben
den Garaus gemacht zu haben.
- Das Fenster zum Einstellen einer Taskpriorität bekam kein Pattern. Bug
fixed.
- Gewaltiger Bug in der "Save Windows"-Routine entfernt!
===========
Version 1.2
===========
30-Jun-93
---------
- Die Dokument-Dateien wurden mit TexInfo bearbeitet und neu gesetzt.
03-Jul-93
---------
- Die Menü-Leiste wurde gekürzt und das Menü etwas anders aufgeteilt
07-Jul-93
---------
- Ein neuer Menüpunkt - Gadgets - ist hinzugekommen.
- Die Quelltexte wurden überarbeitet
- Das Icon wird jetzt vom Programmicon übernommen. Damit ist das
eingebaute Icon überflüssig und RSys wieder kleiner geworden
10-Jul-93
---------
- Noch einen Bug in der Menü-Iconify-Routine ausgebügelt
- Die Gadget-Texte haben einen Rahmen bekommen, eine Bevelbox
- Das Layout der einzelnen Fenster wurde etwas "verschönert"
- Ein neues Font-Anzeigefenster wurde programmiert
15-Jul-93
---------
- Ein Statusbalken ist dazugekommen und ein neues Flag, "Working bar"
- Fehler in der Preference-Liste entdeckt! Harter Bug fixed.
- Dokumentation angepaßt
===========
Version 1.3
===========
18-Jul-93
---------
- Das AmigaGuide-Hilfe-System wurde installiert
- Dadurch entstandene Bugs beseitigt
18-Jul-93
---------
- Das Hilfesystem wurde verbessert, der Guide-File ist jetzt die
Originaldokumentation, und die Context-Daten wurden extern ausgelagert
- Wird der Bildschirm, auf dem sich das Hauptfenster befindet,
gewechselt, werden die Hilfe-Fenster ebenfalls auf dem neuen Screen
gewechselt
- Die Dokumentation wird aktualisiert
- Der Quelltext wurde weiter dokumentiert und die Dateien wieder mal
sinnvoller aufgeteilt
18-Jul-93
---------
- Das Programm hat eine neues ToolType LISTVIEWHEIGHT. Es gibt die Anzahl
der darzustellen Zeilen im ListView an. Ist die Anzahl zu groß, wird
automatisch die maximale Höhe berechnet. Wird -1 angegeben wird immer
das Maximum der Höhe berechnet
23-Jul-93
---------
- RSys hat ein Sizing Gadget. Die Höhe ist jetzt (fast) frei wählbar.
- Die Harwaredaten sind extern und können mit einem Goodie (HW)
bearbeitet werden
- RSys.hlp ist verschwunden. Die Amigaguide-Hilfe benötigt jetzt einen
Context-File, der im DOC/Verzeichnis liegen muß. Die vollständige
Pfadbezeichnung findet sich in der Env:-Variablen RSYSHELP
25-Jul-93
---------
- Locks können nun freigegeben werden, allerdings nur echte Dateien,
keine Verzeichnisse
- Die Environmentvariablen werden nicht mehr benötigt. RSys wird voll
über die ToolTypes konfiguriert.
28-Jul-93
---------
- RSys hat jetzt einen Speichermonitor. Alle Listenobjekte die früher
nicht modifiziert werden konnten, kommen jetzt automatisch in den
Speichermonitor
- Der Quelltext wurde wieder einmal überarbeitet und gekürzt
02-Aug-93
---------
- RSys ist breiter geworden, die Anzeige enthält jetzt auch zu allen
sinnvollen Einträgen die entsprechenden Listen
- Die Systemrequester wurden dem Style Guide angepaßt: rechts immer die
ablehnende Antwort. Die Requester können nun also evtl. mit ESC
verlassen werden
03-Aug-93
---------
- Ein Speicherchecker eingebaut a la Enforcer! Jetzt kann der Typ des
Speicherbereiches getestet werden.
08-Aug-93
---------
- Die Dokumentation ist vollständig neu überarbeitet und für die
Zusammenarbeit mit der AmigaGuide-Hilfe von RSys vorbereitet.
14-Aug-93
---------
- Es wird der nicht-proportionale System-Font verwendet
- Eine neue Liste ist dazugekommen: Memory areas. Alle ermittelten
Speicher-Bereiche werden ausgegeben (Enforcer-Areas).
29-Aug-93
---------
- RSys hat ein Gadget, mit dem die aktuelle Liste erneuert werden kann,
es ist also nicht mehr nötig, sich durch ein Menü zu hangeln, um eine
Liste zu "refreshen"
- RSys gibt keine Meldungen mehr aus, falls externe Dateien nicht gefunden
werden können
- Die Dokumentation wurde erweitert
- Das "New"-Gadget wurde in die Dokumentation aufgenommen
24-Sept-93
---------
- Die Fehlerroutine in RSysError.c wurde umd die Systemfunktionen IoErr()
und Fault() erweitert
- Suchroutine implementiert, drei neue Menüpunkte dazuprogrammiert
Anhang
******
Funktionen
==========
`<<< Prev 512 Byte' Die Speicherbereichs-Gadgets
`>>> Next 512 Byte' Die Speicherbereichs-Gadgets
`About...' Project - About...
`ACTIONFILE' Installation von der WorkBench
`AGUIDECONTEXT' Installation von der WorkBench
`AGUIDEDOC' Installation von der WorkBench
`Amigaguide XRef' Other Lists - Other libraries - Amigaguide XRef
`Assigns' Assign-Liste der DOSBase
`Auto front window' Flags - Auto front window
`AUTOFRONT' Installation von der WorkBench
`BACKGROUNDCOL' Installation von der WorkBench
`BACKPATTERN' Installation von der WorkBench
`BACKPATTERNCOL' Installation von der WorkBench
`Befehls-Gadget' Das Befehls-Gadget
`Blanks beween texts' Das Blanks beween texts-Click-Gadget
`Blitter Wait Queue' Other Lists - Graphics - Blitter Wait Queue
`BLOCKPEN' Installation von der WorkBench
`Bold' Das Bold-Click-Gadget
`Cancel-Gadget' Das Cancel-Gadget
`Case/No case' Das Case-No case-Gadget
`Check Libraries' Actions - Check Libraries
`CLI processes' Other Lists - Exec - CLI processes
`Clip entry...' Clip - Clip entry...
`Clip list' Clip - Clip list
`Commodities' Other Lists - Other libraries - Commodities
`Compute' Das Compute-Gadget
`CopyMem()' Systemlisten und Schutzprotokolle
`CopyMemQuick()' Systemlisten und Schutzprotokolle
`CRC' Das CRC-Gadget
`CRC Check...' Actions - CRC Check...
`Crypt File...' Actions - Crypt File...
`Crypt-ROT13' Das Crypt-ROT13-Gadget
`Current' Das Current-Gadget
`CX_CRC' Installation von der WorkBench
`CX_CRYPT' Die Hotkey-Aktivierung
`CX_CRYPT' Installation von der WorkBench
`CX_FILEREQUEST' Installation von der WorkBench
`CX_FINDFILE' Die Hotkey-Aktivierung
`CX_FINDFILE' Installation von der WorkBench
`CX_FORMAT' Installation von der WorkBench
`CX_FORMAT' Die Hotkey-Aktivierung
`CX_HOTKEY' Die Hotkey-Aktivierung
`CX_HOTKEY' Installation von der WorkBench
`CX_HUNKLIST' Installation von der WorkBench
`CX_SAVEWINDOW' Installation von der WorkBench
`Das Text-Feld' Das Text-Feld
`Decrypt' Das Decrypt-Gadget
`Dest/Select' Das Dest-Gadget und Select
`DETAILPEN' Installation von der WorkBench
`Devices' Das Devices-ListView
`Devices' Das Devs-ListView
`Dirs + Files/Files/Directories' Das Dateityp-Gadget
`Disk label' Das Disk label-Gadget
`Display Modes' Other Lists - Graphics - Display Modes
`Encrypt' Das Encrypt-Gadget
`Entry' Das Entry-Gadget
`ENV-Variables' Other Lists - Preferences - ENV-Variables
`Fast Mode' Flags - Fast Mode
`File' Das File-Gadget
`Find File...' Actions - Find File...
`Find next' Search - Find next
`Find previous' Search - Find previous
`Flush all libraries and fonts' Flushing - Flush all libraries and fonts
`Flush fonts' Flushing - Flush fonts
`Flush libraries' Flushing - Flush libraries
`Fonts' Font-Liste der GfxBase
`Fonts in FONTS' Other Lists - Diskfont - Fonts in FONTS
`Format' Das Format-Gadget
`Format Disk...' Actions - Format Disk...
`Format-Gadget/Select' Das Format-Gadget und Select
`Found files/dirs' Das Found files-dirs-Gadget
`Gadgets' Other Lists - Intuition - Gadgets
`HandlerInp' Inputhandler-Liste
`Hardware' Hardware-Liste der ExpansionBase
`HARDWAREDATA' Installation von der WorkBench
`Help' Project - Help
`Hex/ASCII-Hex-ASCII' Das Display-Gadget
`Iconify' Project - Iconify
`Icons/No Icons' Das Icons-No Icons-Gadget
`IFF File' Das IFF File-Gadget
`Interrupts' Interrupt-Liste der ExecBase
`Intuition - Public Screens' Other Lists - Intuition - Public Screens
`Italic' Das Italic-Click-Gadget
`Jump' Springen zwischen Public Screens
`Kill saved list' Internal List - Kill saved list
`LIBOFFDATA' Installation von der WorkBench
`Libraries' Library-Liste der ExecBase
`List Hunks...' Actions - List Hunks...
`LISTHEIGHT' Installation von der WorkBench
`ListView' Das ListView
`Load' Das Load-Gadget
`Memory' Memory-Liste in der ExecBase
`MENUPEN' Installation von der WorkBench
`Mouse window' Flags - Mouse window
`MOUSEWINDOW' Installation von der WorkBench
`New' Aktualisieren der Liste
`No Format' Das No Format-Gadget
`No header in file' Das No header in file-Click-Gadget
`No international/International' Das No international-International-Gadget
`NOAPPICON' Installation von der WorkBench
`NOFASTMODE' Installation von der WorkBench
`Normal' Das Normal-Click-Gadget
`NOSAVEASKING' Installation von der WorkBench
`NOSORT' Installation von der WorkBench
`OFS/FFS' Das OFS-FFS-Gadget
`OUTWINDOW' Installation von der WorkBench
`OUTWINDOW' Die Hotkey-Aktivierung
`Passwd' Das Passwd-Gadget
`Pattern' Das Pattern-Gadget
`Physical Devices' Other Lists - DOS - Physical Devices
`Ports' Port-Liste in der ExecBase
`Postfix' Das Postfix-Gadget
`Preferences - Printer data' Other Lists - Preferences - Printer data
`Preferences Data' Other Lists - Preferences - Preferences Data
`Prefix' Das Prefix-Gadget
`Quick' Das Quick-Gadget
`Quit RSys...' Project - Quit RSys...
`Quote-in text' Das Quote-in text-Click-Gadget
`RawDoFmt()' Systemlisten und Schutzprotokolle
`Reload action file...' Ext. Data - Reload action file...
`Reload AGuide context nodes...' Ext. Data - Reload AGuide context nodes...
`Reload hardware datas...' Ext. Data - Reload hardware datas...
`Reload library offsets...' Ext. Data - Reload library offsets...
`Rescan windows' Das Rescan windows-Gadget
`Resident programs' Other Lists - DOS - Resident programs
`Resourcen' Resourcen-Liste der ExecBase
`Restore saved list' Internal List - Restore saved list
`ROT 13-Verfahren' Crypt File - Verschluesseln von Dateien
`Save as is' Die Save-Gadgets
`Save ASCII' Die Save-Gadgets
`Save asking' Flags - Save asking
`Save C-Code' Die Save-Gadgets
`Save Configuration' Project - Save Configuration
`Save current list' Internal List - Save current list
`Save found list' Das Save found list-Gadget
`Save Hex' Die Save-Gadgets
`Save List' Abspeichern einer Liste
`Save List' Das Save-List-Gadget
`Save windows...' Actions - Save windows...
`Screens' Screen-Liste der IntuitionBase
`Search-Gadget' Das Search-Gadget
`Search...' Search - Search...
`Sel all/Sel none' Sel all und Sel none
`Select' Das Select-Gadget
`Selected Devices' Das Selected Devices-ListView
`Semaphores' Other Lists - Exec - Semaphores
`Software Devices' Other Lists - Exec - Software Devices
`Sorting' Flags - Sorting
`Source/Select' Das Source-Gadget und Select
`Speaking' Flags - Speaking
`Speicher-ListView/Header' Das Speicher-ListView und der Header
`sprintf()' Systemlisten und Schutzprotokolle
`Start' Das Start-Gadget
`Start/Stop' Das Start-Stop Gadget
`Status' Project - Status
`strcpy()' Systemlisten und Schutzprotokolle
`String-Gadget' Das String-Gadget
`strlen()' Systemlisten und Schutzprotokolle
`strncpy()' Systemlisten und Schutzprotokolle
`Systeminfo' Allgemeine Systeminfo
`Tasks' Task-Liste der ExecBase
`Text formatter' Flags - Text formatter
`Text to save' Das Text to save-Gadget
`To start address' Die Speicherbereichs-Gadgets
`TOF Wait Queue' Other Lists - Graphics - TOF Wait Queue
`Topaz Font' Flags - Topaz Font
`TOPAZFONT' Installation von der WorkBench
`Type' Das Type-Gadget
`Underl' Das Underl-Click-Gadget
`Use Format' Das Use Format-Gadget
`Vectors' Other Lists - Exec - Vectors
`Volume locks' Other Lists - DOS - Volume locks
`Volumes' Volume-Liste der DOSBase
`Windows' Das Windows-ListView
`Windows' Window-Liste der IntuitionBase
`Working bar' Flags - Working bar
`WORKINGBAR' Installation von der WorkBench
`zellularen Automaten' Crypt File - Verschluesseln von Dateien
Programm Index
==============
Gadget: Assigns Assign-Liste der DOSBase
Gadget: Fonts Font-Liste der GfxBase
Gadget: HandlerInp Inputhandler-Liste
Gadget: Hardware Hardware-Liste der ExpansionBase
Gadget: Interrupts Interrupt-Liste der ExecBase
Gadget: Jump Springen zwischen Public Screens
Gadget: Libraries Library-Liste der ExecBase
Gadget: Memory Memory-Liste in der ExecBase
Gadget: New Aktualisieren der Liste
Gadget: Ports Port-Liste in der ExecBase
Gadget: Resourcen Resourcen-Liste der ExecBase
Gadget: Save List Abspeichern einer Liste
Gadget: Screens Screen-Liste der IntuitionBase
Gadget: Systeminfo Allgemeine Systeminfo
Gadget: Tasks Task-Liste der ExecBase
Gadget: Volumes Volume-Liste der DOSBase
Gadget: Windows Window-Liste der IntuitionBase
Menüpunkt: About... Project - About...
Menüpunkt: Amigaguide XRef Other Lists - Other libraries - Amigaguide XRef
Menüpunkt: Auto front window Flags - Auto front window
Menüpunkt: Blitter Wait Queue Other Lists - Graphics - Blitter Wait Queue
Menüpunkt: Check Libraries Actions - Check Libraries
Menüpunkt: CLI processes Other Lists - Exec - CLI processes
Menüpunkt: Clip entry... Clip - Clip entry...
Menüpunkt: Clip list Clip - Clip list
Menüpunkt: Commodities Other Lists - Other libraries - Commodities
Menüpunkt: CRC Check... Actions - CRC Check...
Menüpunkt: Crypt File... Actions - Crypt File...
Menüpunkt: Display Modes Other Lists - Graphics - Display Modes
Menüpunkt: DOS - Volume locks Other Lists - DOS - Volume locks
Menüpunkt: ENV-Variables Other Lists - Preferences - ENV-Variables
Menüpunkt: Fast Mode Flags - Fast Mode
Menüpunkt: Find File... Actions - Find File...
Menüpunkt: Find next Search - Find next
Menüpunkt: Find previous Search - Find previous
Menüpunkt: Flush all libraries and fontsFlushing - Flush all libraries and fonts
Menüpunkt: Flush fonts Flushing - Flush fonts
Menüpunkt: Flush libraries Flushing - Flush libraries
Menüpunkt: Fonts in FONTS Other Lists - Diskfont - Fonts in FONTS
Menüpunkt: Format Disk... Actions - Format Disk...
Menüpunkt: Gadgets Other Lists - Intuition - Gadgets
Menüpunkt: Help Project - Help
Menüpunkt: Iconify Project - Iconify
Menüpunkt: Intuition - Public Screens Other Lists - Intuition - Public Screens
Menüpunkt: Kill saved list Internal List - Kill saved list
Menüpunkt: List Hunks... Actions - List Hunks...
Menüpunkt: Mouse window Flags - Mouse window
Menüpunkt: Physical Devices Other Lists - DOS - Physical Devices
Menüpunkt: Preferences - Printer data Other Lists - Preferences - Printer data
Menüpunkt: Preferences Data Other Lists - Preferences - Preferences Data
Menüpunkt: Quit RSys... Project - Quit RSys...
Menüpunkt: Reload action file... Ext. Data - Reload action file...
Menüpunkt: Reload AGuide context nodes...Ext. Data - Reload AGuide context nodes...
Menüpunkt: Reload hardware datas... Ext. Data - Reload hardware datas...
Menüpunkt: Reload library offsets... Ext. Data - Reload library offsets...
Menüpunkt: Resident programs Other Lists - DOS - Resident programs
Menüpunkt: Restore saved list Internal List - Restore saved list
Menüpunkt: Save asking Flags - Save asking
Menüpunkt: Save Configuration Project - Save Configuration
Menüpunkt: Save current list Internal List - Save current list
Menüpunkt: Save windows... Actions - Save windows...
Menüpunkt: Search... Search - Search...
Menüpunkt: Semaphores Other Lists - Exec - Semaphores
Menüpunkt: Software Devices Other Lists - Exec - Software Devices
Menüpunkt: Sorting Flags - Sorting
Menüpunkt: Speaking Flags - Speaking
Menüpunkt: Status Project - Status
Menüpunkt: Text formatter Flags - Text formatter
Menüpunkt: TOF Wait Queue Other Lists - Graphics - TOF Wait Queue
Menüpunkt: Topaz Font Flags - Topaz Font
Menüpunkt: Vectors Other Lists - Exec - Vectors
Menüpunkt: Working bar Flags - Working bar
tbreak Das Programm tbreak
tracer Batch zum Debuggen von Programmen
Xoper, ARTM, TaskX und andere Was ist RSys?
Konzept
=======
Abspeichern einer Liste Abspeichern einer Liste
Actions - Check Libraries Actions - Check Libraries
Actions - CRC Check... Actions - CRC Check...
Actions - Crypt File... Actions - Crypt File...
Actions - Find File... Actions - Find File...
Actions - Format Disk... Actions - Format Disk...
Actions - List Hunks... Actions - List Hunks...
Actions - Save windows... Actions - Save windows...
Adresse Copyrights und Verwendung
Aktualisieren der Liste Aktualisieren der Liste
Allgemeine Systeminfo Allgemeine Systeminfo
Anhang Anhang
Assign-Liste der DOSBase Assign-Liste der DOSBase
Aufruf von RSys Aufruf von RSys
Batch zum Debuggen von Programmen Batch zum Debuggen von Programmen
Check Libraries - Testen der ROM-LibrariesCheck Libraries - Testen der ROM-Libraries
Clip - Clip entry... Clip - Clip entry...
Clip - Clip list Clip - Clip list
Copyrights und Verwendung Copyrights und Verwendung
CRC-Check - Berechnung von Checksummen CRC-Check - Berechnung von Checksummen
Crypt File - Verschluesseln von DateienCrypt File - Verschluesseln von Dateien
Danksagungen Danksagungen
Das Action-Window Das Action-Window
Das Actioning Das Actioning
Das Anzeige-ListView Das Anzeige-ListView
Das Application Icon Das Application Icon
Das Befehls-Gadget Das Befehls-Gadget
Das Blanks beween texts-Click-Gadget Das Blanks beween texts-Click-Gadget
Das Bold-Click-Gadget Das Bold-Click-Gadget
Das Cancel-Gadget Das Cancel-Gadget
Das Case-No case-Gadget Das Case-No case-Gadget
Das Compute-Gadget Das Compute-Gadget
Das CRC-Gadget Das CRC-Gadget
Das Crypt-ROT13-Gadget Das Crypt-ROT13-Gadget
Das Current-Gadget Das Current-Gadget
Das Dateityp-Gadget Das Dateityp-Gadget
Das Decrypt-Gadget Das Decrypt-Gadget
Das Dest-Gadget und Select Das Dest-Gadget und Select
Das Devices-ListView Das Devices-ListView
Das Devs-ListView Das Devs-ListView
Das Disk label-Gadget Das Disk label-Gadget
Das Display-Gadget Das Display-Gadget
Das Encrypt-Gadget Das Encrypt-Gadget
Das Entry-Gadget Das Entry-Gadget
Das File-Gadget Das File-Gadget
Das Format-Gadget Das Format-Gadget
Das Format-Gadget und Select Das Format-Gadget und Select
Das Found files-dirs-Gadget Das Found files-dirs-Gadget
Das Hauptfenster Das Hauptfenster
Das Icons-No Icons-Gadget Das Icons-No Icons-Gadget
Das IFF File-Gadget Das IFF File-Gadget
Das Italic-Click-Gadget Das Italic-Click-Gadget
Das ListView Das ListView
Das Load-Gadget Das Load-Gadget
Das No Format-Gadget Das No Format-Gadget
Das No header in file-Click-Gadget Das No header in file-Click-Gadget
Das No international-International-GadgetDas No international-International-Gadget
Das Normal-Click-Gadget Das Normal-Click-Gadget
Das OFS-FFS-Gadget Das OFS-FFS-Gadget
Das Passwd-Gadget Das Passwd-Gadget
Das Pattern-Gadget Das Pattern-Gadget
Das Postfix-Gadget Das Postfix-Gadget
Das Prefix-Gadget Das Prefix-Gadget
Das Programm tbreak Das Programm tbreak
Das Quick-Gadget Das Quick-Gadget
Das Quote-in text-Click-Gadget Das Quote-in text-Click-Gadget
Das Rescan windows-Gadget Das Rescan windows-Gadget
Das Save found list-Gadget Das Save found list-Gadget
Das Save-List-Gadget Das Save-List-Gadget
Das Search-Gadget Das Search-Gadget
Das Select-Gadget Das Select-Gadget
Das Selected Devices-ListView Das Selected Devices-ListView
Das Source-Gadget und Select Das Source-Gadget und Select
Das Speicher-ListView und der Header Das Speicher-ListView und der Header
Das Start-Gadget Das Start-Gadget
Das Start-Stop Gadget Das Start-Stop Gadget
Das String-Gadget Das String-Gadget
Das Text to save-Gadget Das Text to save-Gadget
Das Text-Feld Das Text-Feld
Das Type-Gadget Das Type-Gadget
Das Underl-Click-Gadget Das Underl-Click-Gadget
Das Use Format-Gadget Das Use Format-Gadget
Das Windows-ListView Das Windows-ListView
Der Help-Modus Der Help-Modus
Der Speicher-Monitor Der Speicher-Monitor
Der Text Formatierer Der Text Formatierer
Die Action-Anweisungen Die Action-Anweisungen
Die AmigaGuide-Context-Nodes Die AmigaGuide-Context-Nodes
Die Font-Anzeige Die Font-Anzeige
Die Gadgets Die Gadgets
Die Hardware-Daten Die Hardware-Daten
Die Hotkey-Aktivierung Die Hotkey-Aktivierung
Die Library-Offsets Die Library-Offsets
Die Menues Die Menues
Die Save-Gadgets Die Save-Gadgets
Die Speicherbereichs-Gadgets Die Speicherbereichs-Gadgets
Die Utilities von RSys Die Utilities von RSys
Ext. Data - Reload action file... Ext. Data - Reload action file...
Ext. Data - Reload AGuide context nodes...Ext. Data - Reload AGuide context nodes...
Ext. Data - Reload hardware datas... Ext. Data - Reload hardware datas...
Ext. Data - Reload library offsets... Ext. Data - Reload library offsets...
Externe Dateien und Formate Externe Dateien und Formate
Find File - Suche nach Dateien Find File - Suche nach Dateien
Flags - Auto front window Flags - Auto front window
Flags - Fast Mode Flags - Fast Mode
Flags - Mouse window Flags - Mouse window
Flags - Save asking Flags - Save asking
Flags - Sorting Flags - Sorting
Flags - Speaking Flags - Speaking
Flags - Text formatter Flags - Text formatter
Flags - Topaz Font Flags - Topaz Font
Flags - Working bar Flags - Working bar
Flushing - Flush all libraries and fontsFlushing - Flush all libraries and fonts
Flushing - Flush fonts Flushing - Flush fonts
Flushing - Flush libraries Flushing - Flush libraries
Font-Liste der GfxBase Font-Liste der GfxBase
Format Disk - Format-Schnittstelle Format Disk - Format-Schnittstelle
Hardware-Liste der ExpansionBase Hardware-Liste der ExpansionBase
Hintergrundinfos Hintergrundinfos
History History
Inputhandler-Liste Inputhandler-Liste
Installation von der WorkBench Installation von der WorkBench
Installation von RSys Installation von RSys
Internal List - Kill saved list Internal List - Kill saved list
Internal List - Restore saved list Internal List - Restore saved list
Internal List - Save current list Internal List - Save current list
Interrupt-Liste der ExecBase Interrupt-Liste der ExecBase
Library-Liste der ExecBase Library-Liste der ExecBase
List Hunks - Hunk-Struktur ermitteln List Hunks - Hunk-Struktur ermitteln
Memory-Liste in der ExecBase Memory-Liste in der ExecBase
normaler CLI-Befehl Aufruf von RSys
Other Lists - Diskfont - Fonts in FONTSOther Lists - Diskfont - Fonts in FONTS
Other Lists - DOS - Physical Devices Other Lists - DOS - Physical Devices
Other Lists - DOS - Resident programs Other Lists - DOS - Resident programs
Other Lists - DOS - Volume locks Other Lists - DOS - Volume locks
Other Lists - Exec - CLI processes Other Lists - Exec - CLI processes
Other Lists - Exec - Semaphores Other Lists - Exec - Semaphores
Other Lists - Exec - Software Devices Other Lists - Exec - Software Devices
Other Lists - Exec - Vectors Other Lists - Exec - Vectors
Other Lists - Graphics - Blitter Wait QueueOther Lists - Graphics - Blitter Wait Queue
Other Lists - Graphics - Display Modes Other Lists - Graphics - Display Modes
Other Lists - Graphics - TOF Wait QueueOther Lists - Graphics - TOF Wait Queue
Other Lists - Intuition - Gadgets Other Lists - Intuition - Gadgets
Other Lists - Intuition - Public ScreensOther Lists - Intuition - Public Screens
Other Lists - Other libraries - Amigaguide XRefOther Lists - Other libraries - Amigaguide XRef
Other Lists - Other libraries - CommoditiesOther Lists - Other libraries - Commodities
Other Lists - Preferences - ENV-VariablesOther Lists - Preferences - ENV-Variables
Other Lists - Preferences - Preferences DataOther Lists - Preferences - Preferences Data
Other Lists - Preferences - Printer dataOther Lists - Preferences - Printer data
Paßwort Crypt File - Verschluesseln von Dateien
Port-Liste in der ExecBase Port-Liste in der ExecBase
Project - About... Project - About...
Project - Help Project - Help
Project - Iconify Project - Iconify
Project - Quit RSys... Project - Quit RSys...
Project - Save Configuration Project - Save Configuration
Project - Status Project - Status
Resourcen-Liste der ExecBase Resourcen-Liste der ExecBase
Save Windows - IFF-Dateien von Windows Save Windows - IFF-Dateien von Windows
Screen-Liste der IntuitionBase Screen-Liste der IntuitionBase
Search - Die Suchfunktion von RSys Search - Die Suchfunktion von RSys
Search - Find next Search - Find next
Search - Find previous Search - Find previous
Search - Search... Search - Search...
Sel all und Sel none Sel all und Sel none
Springen zwischen Public Screens Springen zwischen Public Screens
Systemlisten und Schutzprotokolle Systemlisten und Schutzprotokolle
Task-Liste der ExecBase Task-Liste der ExecBase
Tips und Tricks Tips und Tricks
Verwendete Software Verwendete Software
Volume-Liste der DOSBase Volume-Liste der DOSBase
Was ist RSys? Was ist RSys?
wbstartup-Verzeichnis Installation von RSys
Window-Liste der IntuitionBase Window-Liste der IntuitionBase
Zusammenarbeit mit anderen Programmen Zusammenarbeit mit anderen Programmen